spring bean属性

 属性:

<bean
    id="beanId"

    name="beanName"

    class="beanClass"

    parent="parentBean"

    abstract="true | false"

    singleton="true | false"

    lazy-init="true | false | default"

    autowire="byName | byType | constructor | autodetect | default"

    dependency-check = "none | objects | simple | all | default"

    depends-on="dependsOnBean"

    init-method="method"

    destroy-method="method"

    factory-method="method"

  factory-bean="bean">

</bean>

1.parent

表示该Bean为子Bean,其值指向父Bean,重用父Bean已实现的依赖,如果有很多继承同一个父类的Bean,那么在配置文件中实例那些Bean时候可以省略掉父类已经注入的属性,bean定义继承父bean定义,它可以覆盖父bean的一些值。

<bean id="carnetMgr" parent="txProxyTemplate">
    <property name="target">
        <bean class="ecustoms.carnet.app.biz.CarnetMgr">
            <property name="extensionHistoryDAO" ref="extensionHistoryDAO" />
            <property name="stockTransactionDAO" ref="stockTransactionDAO" />
            <property name="carnetDAO" ref="carnetDAO" />
        </bean>
    </property>
</bean>

2.list, set, map和props元素

分别用来设置类型为List,Set,Map和Propertis的属性值。分别用来为bean传入集合值。 

<bean id="chinese" class="Chinese">
    <property name="friends">
        <list>
            <value>张三</value>
            <value>李四</value>
            <ref>beanID</ref>
            <bean id="" class=""/>
        </list>
    </property>
    <property name="score">
        <map>
            <entry key="数学">
                <value>60</value>
            </entry>
            <entry key="英语">
                <value>70</value>
            </entry>
        </map>
    </property>
    <property name="basicInfo">
        <props>
            <prop key="身高">165</prop>
            <prop key="体重">45kg</prop>
        </props>
    </property>
    <property name="interest">
        <set>
            <value>唱歌</value>
            <value>跳舞</value>
        </set>
    </property>
</bean>

对应的java代码如下:

public class Chinese implements People {    
     private List friends = new ArrayList();    
     private Map score = new HashMap();    
     private Properties basicInfo = new Properties();    
     private Set interest = new HashSet(); 
}   

 3.id

Bean的唯一标识名。它必须是合法的XML ID,在整个XML文档中唯一。

4.name

用来为id创建一个或多个别名。它可以是任意的字母符合。多个别名之间用逗号或空格分开。

5.class

用来定义类的全限定名(包名+类名)。只有子类Bean不用定义该属性。

6.abstract(默认为”false”)

用来定义Bean是否为抽象Bean。它表示这个Bean将不会被实例化,一般用于父类Bean,因为父类Bean主要是供子类Bean继承使用。ture表示抽象Bean,ApplicationContext预初始化时忽略所有抽象Bean定义

7.singleton(默认为“true”)

定义Bean是否是Singleton(单例)。如果设为“true”,则在BeanFactory作用范围内,只维护此Bean的一个实例。如果设为“flase”,Bean将是Prototype(原型)状态,BeanFactory将为每次Bean请求创建一个新的Bean实例。

8.lazy-init(默认为“default”)

用来定义这个Bean是否实现懒初始化。如果为“true”,它将在BeanFactory启动时初始化所有的Singleton Bean。反之,如果为“false”,它只在Bean请求时才开始创建Singleton Bean。

9.autowire(自动装配,默认为“default”)

它定义了Bean的自动装载方式。

      1、“no”:不使用自动装配功能。

      2、“byName”:通过Bean的属性名实现自动装配,根据Bean定义时的“id"属性上指定的别名与Setter名称是否一致进行自动装配。

      3、“byType”:通过Bean的类型实现自动装配,根据PoJo的setXXX()方法所接受的类型判断bean定义文件是否定义有类似的类型对象进行自动装配。

      4、“constructor”:类似于byType,但它是用于构造函数的参数的自动组装,Spring容器比对容器中的Bean实例类型及相关的构造方法上的参数类型是否符合进行自动装配。

      5、“autodetect”:通过Bean类的反省机制(introspection)决定是使用“constructor”还是使用“byType”,先进行constructor自动装配,若缺省,则进行byType自动装配。

 

10.dependency-check(依赖检查,默认为“default”)

它用来确保Bean组件通过JavaBean描述的所以依赖关系都得到满足。在与自动装配功能一起使用时,它特别有用。

1、 none:不进行依赖检查。

2、 objects:只做对象间依赖的检查。

3、 simple:只做原始类型和String类型依赖的检查

4、 all:对所有类型的依赖进行检查。它包括了前面的objects和simple。

 

11.depends-on(依赖对象)

这个Bean在初始化时依赖的对象,这个对象会在这个Bean初始化之前创建。若A depends-on B 意思是实例化A之前必须先实例化B,但A不需要持有B的实例

12.init-method

用来定义Bean的初始化方法,它会在 BeanFactory创建JavaBean实例和属性set注入之后调用。它必须是一个无参数的方法一般用于一些资源的初始化工作。

13.destroy-method

用来定义Bean的销毁方法,它在BeanFactory关闭时调用。同样,它也必须是一个无参数的方法。它只能应用于singleton Bean。

14.factory-method

定义创建该Bean对象的工厂方法。它用于下面的“factory-bean”,表示这个Bean是通过工厂方法创建。此时,“class”属性失效。若是class属性指向工厂类,该工厂类包含的工厂方法须是static

15.factory-bean

定义创建该Bean对象的工厂类。如果使用了“factory-bean”则“class”属性失效。factory-bean属性必须指定一个bean的名字,这个bean一定要在当前的bean工厂或者父bean工厂中,并包含工厂方法。而工厂方法本身通过factory-method属性设置。

 

@Component:标注一个普通的Spring Bean类

@Controller:标注一个控制器组件类

@Service:标注一个业务逻辑组件类

@Repository:标注一个DAO组件类

约定只是将Bean类首字母改为小写,其他部分不变

@Scope指定作用域

@Resource指定配置依赖

@Autowired自动装配,默认byType.一个实例里面配置一个Field,若多个就要用Field[]数组,如果配置集合Field一定要用泛型

@Qualifier精确的自动装配,byName

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值