| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> Java知识库 -> Spring 小白教程_Day2 -> 正文阅读 |
|
[Java知识库]Spring 小白教程_Day2 |
目标: 1.了解掌握spring的xml文件配置的几种方式 ? ? ? ? ? ?2.对注解开发进行一定程度的理解(Day3的内容) 开发步骤: 1.导入相关依赖 2.创建接口及其实现类 3.编写核心配置文件 4.装配bean? ?,使用几种方式 5.验证各种bean装配方式的效果 IOC的基本原理就是使用java的反射机制,通过反射来获取对象,class.forName("全包名")? 会返回一个实例对象 其实际反射的一系列代码都被spring进行封装了一层,在spring的getbean()方法的类中进行封装 Spring bean标签的范围配置 Scope:指对象的作用范围,取值如下: singleton? ?默认值,单例的? ?(即? 通过反射获得的对象是同一个对象) protetype? 多例的? ? ? ? ? ? ? ? ? (通过反射获得的对象是不同的对象) request? ? web项目中,Spring 创建一个bean的对象,将对象存入到Request域中 session? ?web项目中,Spring创建一个bean的对象,将对象存入到session域中 global session? web项目中,应用在portlet环境,如果没有Portlet环境,那么globalsession相当于session 测试 --------在xml文件中给装配的bean配置一个scope? ?分别是singleton? 和 protetype?? 然后在test中分别打印通过反射获得的对象的地址? ?? 就会发现,配置了singleton的,获取到的对象的地址是相同的,表明是同一个实例,而 配置了protetype的,打印出的对象地址各不相同,表明是多例的 附图: ? ? ? 同时,在使用singleton模式时,对象的创建是在加载配置文件的时候就进行的 ?下图可看见当程序走到getBean()时,对象反射还没有进行,但是却已经调用了对象的无参构造 ? 表明singleton模式在加载配置文件的时候进行了创建,反之,这里也配置了protetype模式,但是其对象却没有在加载配置文件时候进行创建,只有在进行反射时才创建对象 bean的生命周期 init-method? :指定类中的初始化方法 (用于对象创建完毕时想要初始化的数据) destory-method :指定类中销毁方法名称(用于对象销毁之前用来执行相关的销毁工作) ?bean实例化的三种方式: 1:无参构造方法实例化----以上的所有测试都是无参构造(也是常用) 2:工厂静态方法实例化(不常用--了解即可) 3:工厂实例方法实例化(不常用--了解即可) Spring配置文件的依赖注入 一:dao层的对象和service层的对象都存在于Spring容器中,但其实web层最终只是使用Service层的对象 ,不需要使用dao层的对象,总之就是service层要获取到dao层对象,使用其对象的方法来实现service的方法,所以可以在Spring容器中将dao层的对象组装到service内部完成的操作------依赖注入 内部组装方法: 一:set()方法 二:构造方法 使用set方法进行依赖注入: 一:将要被注入的对象设置为注入类的一个属性,并且要设置set()方法 二:要被注入对象要在xml文件中装配bean,放入spring容器中,同时注入类也要 装配bean,让二者同时存在Spring容器中 三,在注入类的bean中配置<property name=""? ref="">标签,同于将对象进行set进去。 依赖注入完成,全程只需要关注xml配置文件 由于字标签写法繁琐,所以使用p命名空间注入 1:引入p命名空间标识---- xmlns:p="http://www.springframework.org/schema/p" ? 2:使用p:? ?ref=""进行引入对象进行set? ? 依赖注入完成 2:有参构造方法注入 ? ?使用<constructor-arg name="" ref="'>标签进行注入 当然--以上都是引用bean对象,普通数据类型和集合数据类型也一样可以引入 普通数据: ? ? ?成功: ? 特殊数据类型注入: List? Map 采用set()方法注入: 一:要在注入类将相应的数据类型设置为属性,并且生成set方法 ?二:在xml配置文件中将要使用到的对象全部都装配到bean中: ? ?三:在xml文件中使用<property name ="">子标签进行配置 ? ? ? ? ? ? ? ?如果是List,则还需要在子标签下创建<list>子标签 再在其下创建<value>子标签 数据写在此标签下 ? ? ? ? ? ? ? ? 如果是map,需要在其子标签下创建map子标签, 再在其下创建<entry key="" value=''/value-ref="">子标签 写入数据 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/23 15:22:46- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |