spring 笔记 (1)
反向控制: 协调依赖的对象之间合作的的责任从对象自身中转移出来。这样可以减轻耦合程度;
?
Bean装配
spring有两种容器?
?? (1)Bean工厂org.springframework.beans.factory.BeanFactory:提供了基本的依赖注入支持,
?? BeanFactory负责实例化对象并创建对象间的关联; 参与对象的生命周期管理,调用用户定义的初始化和销毁方法;
?? 最常用的BeanFactory实现 XmlBeanFactory;
?
?? (2)ApplicationContext应用上下文:org.springframework.context.ApplicationContext:提供了系统构架服务;
??? 提供了文本信息解析工具,包括对国际化的支持;提供了载入文件资源的通用方法,如载入图片;为注册为监听器的Bean发送事件;
(1)和(2)的另外一个区别:单实例Bean如何被载入;
BeanFactory延迟载入所有的Bean,知道getBean()被调用时才创建Bean;
ApplicationContext预先加载所有单实例的Bean,
Bean生命周期:
? BeanFactory在加载了Bean之后,Bean的生命周期就开始了;
? BeanFactory在Bean可以使用之前还做了很多工作:
????? (1)容器寻找Bean的定义,并实例化
????? (2)使用依赖注入,Spring按照Bean定义信息配置其属性;
????? (3)如果Bean实现了BeanNameAware接口,调用setBeanName()方法,传递Bean的id;
????? (4)如果Bean实现了BeanFactoryAware接口,调用setBeanFactory()方法,传递BeanFactory自身;
????? (5)如果有BeanPostProcessor和Bean关联,调用postProcessBeforeInitialization()
????? (6)如果Bean指定了初始化的方法 init-method,调用初始化方法;
????? (7)如果有BeanPostProcessor和Bean关联,调用postProcessAfterInitialization()
Set方式注入依赖
基本配置:
?<bean id="id" singleton="false"/>
??????????? singleton设置为false表明是原型,每次返回不同的实例;否则默认返回是同一个实例;
?<bean id="id" init-method="" destory-method=""/>
??????????? init-method,实例化后立即会被调用? destory-method在Bean从容器中删除之前调用;
?例子:
(1)基础类型或string类型的值
<bean id="id" />
???? ? ? </entry>
????? </map>
?? </property>
</bean>
?
国际化message
ResourceBundleMessageSource
messageSource这个名字不可以变
添加的配置:
<bean id="messageSource" class="org.springframwork.context.support.ResourceBundleMessageSource">
??? <property name="basename">
???????? <value>property文件名</value>
??? </property>
</bean>