首页 > 代码库 > Spring IOC之注入
Spring IOC之注入
1.概念
控制权的转移,应用程序本身不负责依赖对象的创建和维护,而是由外部容器负责创建和维护
简而言之:
把本身可以创建对象的权利交给IOC容器,当要实例化该对象的时候,由IOC容器来实例化该对象(专注于使用IOC创建的对象)
2.目的
创建对象并且组装对象之间的关系
3.步骤
1.Bean容器初始化
(即IOC容器加载beans的xml配置文件)
(加载并初始化配置文件<beans></beans>)
1.两个基础包
1.org.springframework.beans
1.BeanFactory提供配置结构和基础功能,加载并初始化Bean
2.org.springframework.context
2.ApplicationContext保存了Bean对象并在Spring中被广泛使用
2.ApplicationContext初始化方式
1.本地文件
2.Classpath
3.web应用中依赖servlet/Listener
2.配置
Spring容器的配置文件
<beans>
<bean id=“name”>对象路径</bean>
</beans>
3.创建对象并调用
getBean(“id_name”)
4.IOC的实现方式
(向Spring IOC容器注入Bean容器,就是注入bean的方式)
1.DI(依赖注入)
1.概念:
1.就是由IOC容器在运行期间,动态的将某种依赖关系注入到对象之中
(给属性赋值的关系;1.xml注入(设值、构造)2.注解注入(@Required。。。))
2.Spring注入是指在启动Spring容器加载bean配置的时候,完成对变量的赋值行为
简而言之:
在IOC容器加载的过程中,会扫描xml文件的相关配置,然后,创建并实例化bean,
注入,就是在IOC创建bean的时候,给成员变量的赋值
2.两种注入方式
1.XML配置bean注入
(使用xml定义bean)
1.设置注入
语法:
<bean id="标识1" class="类路径1">
<property name="类路径1的私有属性" ref="标识2" />
</bean>
<bean id="标识2" class="类路径2">
</bean>
解释:
property中的name指向的是类路径1对象的私有属性,在IOC容器实例化bean对象的时候,
自动调用setName()的JavaBean方法,把ref引用的值赋予给属性
前提:
该类含有property中name的私有属性,并有该属性的setName()的JavaBean方法
2.构造注入
语法:
<bean id="标识1" class="类路径1">
<constructor-arg name="类路径1的私有属性" ref="标识2" />
</bean>
<bean id="标识2" class="类路径2">
</bean>
解释:
在IOC容器调用类路径1构造器生成实例的时候,把ref引用的值赋予该constructor-arg中的name属性
前提:
该类含有constructor-arg中name的私有属性,并含有constructor-arg中name为参数的构造方法
3.延迟/懒加载
1.lazy_init,bean的一个参数
2.其值默认为default;当类注入到bean容器的时候,在Spring容器applicationContext实例化的时候,顺便生成的了
3.其值为true的时候,会开启懒人模式
4.当设置bean为原型的时候,懒加载无效
因为原型是在实例化的时候才有,不会随Spring容器applicationContext一同加载
4.scope
1.其值
singleton、prototype、request、session(后两个跟web工程有关)
5.生命周期
1.init-method、destroy-method都是自定义的两个方法
2.销毁方法的调用时,需要借助applicationContext.close();(applicationContext的接口)
6.Map
多个值注入
7.ref
1.引用其它的bean设值
2.两种形式
1.ref=“beanName”
2.自定义的就<ref bean="beanName"/>
Spring IOC之注入