IoC的“精”和Spring的“细节?/b>?br>1、核心bean工厂
1.1 基础接口Q?br> BeanFactory
ListableBeanFactoryQ只可用于当前的工厂实例Q而不能进入工厂的层体系Q?br> beanFacoryUtilsQ可以遍历整个工厂体p)
1.2 通过XMLl装beanQ?br> 定义beanlgQ借助标准的java.beans.PropertyEditor机制Qbean工厂可以自动把Stringcd的D{换ؓ适当的类型)
讉KbeanlgQ?b>a:XmlBeanFactory?b>b:DefaultlistableBeanFactory和XmlBeanDefinitionReaderQ?br> 1.3 非XML格式的Bean声明
d属性文件或资源包(PropertiesBeanDefinitionReaderQ?br> ~程方式注册QRootBeanDefinition和MutablePropertyValuesQ?br> 1.4 l装应用对象
bean工厂可以Ҏbean属性中描述的对象依赖来l装QwireQbean实例Q得Spring容器能够对受对象进行依赖决议(dependency resolvingQ?br> 1.5 自动装配QautowireQ?br> byType、byNameQ推荐byType(出错可能?
1.6 依赖查(dependency checkingQ?br> <bean id ="****" class="" autowire="byType" dependency-check="objects">
.</bean>
gؓ“object”时Q表C只做对象间兌的检查;
gؓ“simple”时Q表C只查基本类型的属性(原始cd或者StringQ;
gؓ“all”时Q表C检查所有的cdQ?br> gؓ“none”,表示不进行依赖检查;
1.7 生命周期回调
在beanlg声明中指定回调方?br> <bean id="*****" class="****" init-method="initialize" destory-method="shutdown"/>
***cd需提供无参数、访问别ؓpublic的initialize和shutdown两个Ҏ卛_Q不必实CQ何SpringҎ的接口(不依赖SpringQ?br> 只要有可能,应该量使用JavaBean的属性或者构造子参数Q而不是实现Spring生命周期Ҏ?br> 1.8 复杂的属性?br> 数组和Listl装方式一P
1 <property name="myArrayList">
2 <list>
3 <ref bean="ABean"/>
4 <ref bean="BBean"/>
5 <value>myArrayValue</value>
6 <value>myListValue</value>
7 </list>
8 </property>
Map和Properties都一个Key?但是不一P废话一句)Q?br> 1 <property name="myMap">
2 <map>
3 <entry key="myMapKey">
4 <ref bean="myBean"/>
5 </entry>
6 <entry key="yourMapKey">
7 <value>yourMapValue</value>
8 </entry>
9 </map>
10 </property>
1 <property name="myProperties">
2 <props>
3 <prop key="myPropKey">
4 myPropValue
5 </prop>
6 <prop key="yourPropKey">
7 yourPropValue
8 </prop>
9 </props>
10 </property>
2、工厂bean
2.1 工厂beanQfactory beanQ?- 它们实现了org.springframework.beans.factory.FactoryBean接口Q?br>public interface FactoryBean{
object getObject() throws Exception;
Class getObjectType();
boolean isSingleton();
}
2.2 Spring内徏的资源工厂,包括Q?br> 2.2.1 org.springframework.jndi.JndiObjectFactoryBean:一个通用的工厂beanQ通过JNDI查找而获得的对象。JNDI查找由Spring--而不是应用代?-来执行;
2.2.2 org.springframework.orm.hibernate.LocalSessionFactoryBean:用于在本地装配Hibernate SessionFactory的工厂beanQ?br> 2.2.3 org.springframework.aop.framework.ProxyFactoryBean:一个通用的工厂beanQ用于获得AOP代理?br> 2.2.4 org.springframework.transaction.interceptor.TransactionProxyFactoryBean:用于为对象创Z务代理,用于实现h用的声明性食物管理;
2.2.5 org.springframework.remoting.rmi.RmiProxyFactoryBean:q个工厂bean可以为通过RMI讉K的远E对象创Z个代理;
以上为常用的Q不常用的不列了......
3、Spring 应用上下?br> 应用上下文是应用E序的中心注册机构?
3.1 除了支持bean工厂的全部功能之外,应用上下文还具备了下列功能:
*支持不同信息?/b>。可以用l一的方式根据键获得本地化的信息Q而不依赖地称的信息来源。默认的实现是从资源l定中读取信息?br> *讉K文g资源?/b>不依赖于实际资源环境Q例如文件系l或ServletContextQ的情况下,Ҏ相对路径载入资源?br> *支持应用事g。监听器QSpring AOP框架可以作ؓ“事?监听”机制的替代品)?br> 3.2 讉K信息源以及访问文件资源,引用对象依赖更专用的接口--org.springframework.context.ResourceLoaderAware接口--卛_?br> 3.3 信息源,在应用上下文声明一个名为messageSource的MessageSourc对象Q默认实现是ResourceBundleMessageSource,它对标准的java.util.ResourceBundleq行了封装,它唯一需要的参数是basename,也就是资源包的文件名--只读取一ơ,攑օ~存Q也提供了“ReloadableResourceBundleMessageSource?可重新加??br> 3.4 文g资源
实现ResourceLoadAware接口?br> 3.5 Bean Factory 后处?br> ----------

]]>