Bean的实例化
.Spring容器创建Bean对象的方法有三种
-构造器来实例化
<bean id="helloWorld" class="com.seecen.javaBean.HelloWorld"></bean>
<bean name="helloWorld" class="com.seecen.javaBean.HelloWorld"></bean>
id或name属性用于指定Bean名称,用于从Spring中查找这个Bean对象
class用于指定Bean的类型,会自动调用无参构造器创建对象.
-使用静态工厂方法实例化
-使用实例工厂方法实例化
Bean的命名
.Bean的名称
-在Spring容器中,每个Bean都需要有名字(标识符),该名字可以用Bean元素的id和name属性指定.(唯一
性,不能使用特殊符号:"/"等)
.Bean的别名
Bean的作用域
.Spring容器在实例化Bean时,可以创建以下作用域的Bean对象
作用域 描述
singleton 在每个Spring IOCring容器中一个Bean定义对应一个对象实例,默认项
prototype 一个bean定义对应多个对象实例
request
session
global Session
实例化Spring容器实例.
步骤一:导包
步骤二:新建Spring配置文件
步骤三:配置javaBean
步骤四:测试
Bean的生命周期回调
.指定初始化回调方法init
.指定销毁回调方法destory
ps:指定销毁回调方法,仅适用于singleton模式的bean
Bean延迟实例化
指定bean依赖关系
控制Bean的实例化
测试Bean的作用域,Bean的生命周期回调(创建,初始化,被使用,销毁),Bean对象的创建时机以及如何指定Bean的依赖关系
步骤一:新建ExampleBean
Bean的生命周期回调(创建,初始化,被使用,销毁)
销毁:希望bean对象销毁前自动调用destory方法
在顶级元素或根元素<beans>元素中default-init-method属性以及default-destory-method属性,
可以为容器中的所有<bean>指定初始化回调方法以及销毁回调方法
步骤三:bean对象的创建时机
ps:IOC容器中的bean对象在容器被加载时就会被创建
原因:为了节省资源,当用户需要用到某些bean再创建指定的bean.
解决方案:
通过设置配置文件lazy-init="true",可以改变spring容器创建对象的时机
使用该属性之后,容器中的对象不使用则不创建
在顶级beans元素中使用dafault-lazy-init为容器中所有的bean指定延迟实例化特性
步骤四:指定bean依赖关系
A B
A类中有一个B类型的属性
A类实例化依赖于B类
A类型即使没有B类型的属性
但是如果A类型要创建对象成功必须先实例化B类型对象
<bean id="exampleBean" depends-on="exampleBean1" class="com.seecen.javaBean.ExampleBean"></bean>
<bean id="exampleBean1" class="com.seecen.javaBean.ExampleBean1"></bean>
通过上述配置可以看出:exampleBean依赖于exampleBean1
因此在创建exampleBean的同时也创建exampleBean1
4.利用Spring实现bean属性setter方式注入
JDBCDateSource类封装了管理数据库连接的方式getConnection().
利用Spring实现JDBCDateSource对象的创建(实例化),在使用setter注入方式将数据库参数注入
给JDBCDateSource,这样就可以正常的调用getConnection方法获取数据库连接了.
IOC:控制反转
IOC:是指程序中对象获取的方式发生反转,由最初的new方式创建,转变为由第三方框架创建,注入.
第三方框架一般是通过配置方式指定注入哪一个具体实现,从而降低了对象之间的耦合度
.Spring容器是采用DI方式实现了IO控制.IOC是Spring框架的基础和核心.
IOC是一种思想,而DI是实现IOC的主要技术途径
DI主要有两种注入方式,即setter注入和构造器注入
setter注入:.........
构造器注入:
基于构造器的注入是通过调用带参数的构造器来实现的,容器在bean被实例化的时候,根据参数类型
指向对应的构造器