美文网首页
2021-06-07_Spring实例化Bean的方法

2021-06-07_Spring实例化Bean的方法

作者: 微笑碧落 | 来源:发表于2021-06-06 09:02 被阅读0次

    0.前言

    • 依赖注入分2个步骤,第一个步骤是bean的创建。第2个步骤是bean的各种属性注入。
    • Spring关注于对象。。也就是静态类属性不太好注入。。就是说Spring在静态类属性和单例模式中选择了单例模式

    1. 实例化bean的3种方法

    1.1 构造器实例化bean

    • 这个比较简单,指明class就可以创建一个bean
    • 通过调用class的构造函数实例化bean,当然可以指明构造函数的参数。具体见后文的bean属性注入。
    • 其中id可以省略---如果这个bean创建后可以通过list等方式引用。
    <bean id="appConfig" class="MissionAdmin.AppConfig"/>
    

    1.2 静态工厂方式实例化

    • 这个主要是调用类的静态工厂方法来创建一个bean。
    • 常用于单例模式。
    • 需要指定一个静态工厂方法
    • 如下例子,会调用MissionAdmin.AppConfig.getinstance()方法来返回一个bean
    <bean id="appConfig" class="MissionAdmin.AppConfig" factory-method="getInstance">
    

    1.3 实例工厂方式实例化

    • 比较类似静态工厂方法,但是此时会先实例一个工厂,在调用该工厂的工厂方法来创建一个bean
    • 需要先指定一个实例工厂,并指定实例工厂的实例方法。
    • 如下例子,先创建一个id为myBeanFactory的工厂。然后调用这个工厂实例方法来创建一个bean。
    • 使用时,直接applicationContext.getBean()即可,Spring会自动创建实例工厂。
    <bean id="myBeanFactory" class="com.mengma.instance.factory.MyBeanFactory" />
    <bean id="user1" factory-bean="myBeanFactory" factory-method="createBean" />
    

    2. bean的各种属性注入

    2.1 setter方式

    • 指明property子元素的name即可。会自动访问bean的setter方法来注入属性值
    • bean必须符合规范。即各种setter等的命名满足规范等
    • 可以通过ref值来指明另外一个对象
    • 通过value指明一个常量值
    <bean class = "">
        <property name="missingOutage" value="">
        <property name="missingOutage" ref="">
    </bean>
    

    2.2构造函数方式

    • index 属性指定构造参数的序号(从 0 开始)
    • type 属性指定构造参数的类型
    <bean class = "">
        <constructor-arg name="id" value="1"/>
        <constructor-arg index="0" value="1" type = ""/>
    </bean>
    

    3. List集合、数组等的注入

    • 可以用ref指明一个对象引用或value指明一个常量
    • 或者直接用bean嵌套,创建一个bean。此时bean的id属性可以省略
    <bean>
        <property name="aList">
            <list>
                <ref bean="user1"/>
                <ref bean="user2"/>
                            <bean/>
            </list>
        </property>
    </bean>
    
    <property name="missingControlLevel">
      <array>
        <value>车间级</value>
        <value>班组级</value>
      </array>
    </property>
    

    参考文章

    1.Spring实例化Bean的三种方法
    2.spring注入List集合

    相关文章

      网友评论

          本文标题:2021-06-07_Spring实例化Bean的方法

          本文链接:https://www.haomeiwen.com/subject/benkeltx.html