Spring关于Bean
spring创建bean的三种方式:调用构造器,调用静态工厂方法,调用实例工厂方法
静态工厂方法:
<bean id=
"dog"
class
=
"静态工厂类"
factory-method=
"静态工厂类里面的方法"
>
<!-- 配置静态工厂方法的参数 -->
<constructor-arg value=
"一个参数,如果相同于静态工厂类里面的方法的参数,就返回该参数类的方法"
/>
<!-- 驱动Spring以
"我是狗"
为参数来执行dog的setMsg()方法 -->
<property name=
"msg"
value=
"我是狗"
/>
</bean>
实例工厂方法:
<bean id=
"chinese"
factory-bean=
"工厂Bean名字"
factory-method=
"工厂Bean里面的方法名"
>
<!-- 配置实例工厂方法的参数 -->
<constructor-arg value=
"chin"
/>
</bean>
抽象bean不能被实例化。抽象bean的价值在做父bean被继承,配置设置成
abstract
=
"true"
spring里bean继承与java继承区别:前者是对象与对象之间的关系,后者是类与类之间的关系;前者可以是不同类型,后者子类可看做一个特殊的父类;前者子bean不能作父bean使用,后者子类可以完全当作父类实例使用。
Spring中bean容器的生命周期
注入依赖关系之后的行为有:使用init-method属性、实现InitializingBean接口
bean销毁之前的行为有:使用destroy-method属性,实现DisposableBean接口
lookup-method方法:bean定义为抽象类里面有抽象方法名与lookup-method的方法名相同。解决singleton与prototype作用域不同步
获取其他bean的属性值
<bean id=
"son2"
class
=
"org.crazyit.app.service.Son"
>
<property name=
"age"
>
<!-- 使用嵌套Bean为调用setAge()方法指定参数值 -->
<bean id=
"person.son.age"
class
=
"org.springframework.beans.factory.config.PropertyPathFactoryBean"
/>
</property></bean>
或者<bean id=
"son2"
class
=
"org.crazyit.app.service.Son"
>
<property name=
"age"
>
<util:property-path path=
"person.son.age"
/>
</property></bean>
---恢复内容结束---