创建bean的三种方式:
1.使用构造器创建Bean(constructor-arg )(前面已介绍)
2,使用静态工厂方法创建Bean
《1》bean中的class使用静态工厂
《2》factory-method使用静态工厂的静态方法
如果静态方法需要参数,需要使用<contructor-arg value="">元素传入参数
接下来用其他具体的bean进行注入
3.调用实例工厂方法创建bean
<1>bean中的没用class属性,使用factory-bean=""属性进行设置
<2>使用factory-method=“”“”实例方法进行创建。其他的一样
深入理解Bean:
spring的大量工作就是管理bean的:
<1 避免配置文件臃肿
抽象Bean:可以被集成的Bean、不可被实例化、属性abstract='true'进行设置
子bean:通过parent定义父bean,当配置信息和父bean不一致的重复值时被覆盖。\区别Java的继承(1,spring可以是不同类型,java是特殊父类型、2spring是参数延续,java是方法属性的延续3,spring子beana不可再被继承)
< 2 工厂bean 特殊的工厂bean与之前不同,这种工厂必须实现FactoryBean接口,返回获取任意类的、任意静态Field的值,获取beanid时获取的不是bean而是factoryBeand的产品,前面加上&符号时返回的是工厂对象本身。
<3 获取beanid 使用BeanNameAware接口,类实现该接口,并实现setBeanName方法,就可以在程序中调用Beanname了。
强制初始化Bean,当一些Bean之间的依赖关系不够直接时,初始化就会发生异常,需要强制显示在bean之前的bean,depands-on=" '属性。
Bean的生命周期:
spring可以管理singleton的Bean的生命周期,对Prototype只是负责创建,
<1 对于singleton的进行管理,依赖关系注入之前的行为
《1》使用init-method属性
《2》实现initializingBean接口,有一个afterPropertiesSet()方法。