美文网首页
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