发表于: 2017-09-22 21:22:27
1 919
今天完成的内容:
(1)学习关于spring IOC容器与Bean的生命周期问题:
简介:IOC可以说是sprign框架的核心技术和起点,最主要的作用是:将主类对依赖的主动管理反转成spring容器对依赖的全局控制。这样做的最大好处就是“解耦”,使得程序的各模块之间的关系更为独立,只需要spring控制这些模块之间的依赖关系,并在容器启动和初始化的过程中,依据这些依赖关系去创建、管理和维护这些模块。如果需要改变模块间的依赖关系的话,只需要将更改的依赖关系进行修改即可,spring会在再次启动和初始化容器的过程中使得这些新的依赖关系重新建立符合新需求的模块,在这个过程中,代码本身不需要体现对于模块具体依赖情形的声明,只需要定义其所需模块的接口,同时最好将依赖关系以配置文件或者注解的形式表述出来,相关的spring处理类会根据这些外部的配置文件组装模块,或者扫描注解调用内部的注解处理器组装模块,以此完成IOC的过程,所以这是一种典型的面向接口思想。
Ps:一般称BeanFactory为IoC容器,称ApplicaContex为Spring容器。
Bean的生命周期:在Spring中,可以从两个层面定义Bean的生命周期:第一层是Bean的作用范围;第二层是实例化Bean时所经历的一系列阶段。
在BeanFactory的生命周期:
在ApplicationContext中的生命周期:
(2)写例子关于Spring通过构造方法依赖注入:
大体代码和setter方法注入相同,不同之处如下:
OutputHelper:一个辅助类,之后使用Spring 来注入 IOutputGenerator。
package output;
public class OutputHelper {
IOutputGenerator outputGenerator;
public void generateOutput() {
outputGenerator.generateOutput();
}
//DI via constructor
public OutputHelper(IOutputGenerator outputGenerator){
this.outputGenerator = outputGenerator;
}
}
applicationcontex.xml配置文件也不同:
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
<bean id="OutputHelper" class="output.OutputHelper">
<constructor-arg>
<ref bean="JsonOutputGenerator" />
</constructor-arg>
</bean>
<bean id="JsonOutputGenerator" class="output.JsonOutputGenerator" />
</beans>
输出结果:
与setter方法相比,差异就在于set方法赋值还是构造器构造法赋值。
明天的计划:学习Spring+mybatis和junit。
碰到的问题:对bean的产生过程有点模糊,看书解决。
收获:更加了解了Spring框架。
禅道:http://task.ptteng.com/zentao/task-view-10629.html 预计剩余4小时。
评论