Spring关于Bean

Posted lijingxiang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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>

---恢复内容结束---

以上是关于Spring关于Bean的主要内容,如果未能解决你的问题,请参考以下文章

[死磕 Spring 17/43] --- IOC 之从单例缓存中获取单例 bean

What's the difference between @Component, @Repository & @Service annotations in Spring?(代码片段

关于springMVC中bean无法注入的问题

Spring关于Bean

关于spring给类类型赋值的问题

springbean补充:关于bean的属性