Java教程

Spring 小白教程_Day2

本文主要是介绍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="">子标签

写入数据

这篇关于Spring 小白教程_Day2的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!