首页 > 其他 > 详细

OC容器-实例化Bean、注入的4种配置方式(无注解方式)

时间:2020-09-05 23:32:18      阅读:75      评论:0      收藏:0      [点我收藏+]

有java类

@Data
@NoArgsConstructor
@AllArgsConstructor
public class Addr {
    private String addr;
}
@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {
    private String name;
    private Integer age;
   private Addr addr; //地址信息
}

第一种:基于Get/Set 框架使用反射创建对象,通过配置的class全限定名

<!-- get set-->
<bean id="UserInfo" class="com.spring.domain.User">
     <property name="name" value="孙旺"></property>
     <property name="age" value="18"></property>
     <property name="addr" ref="AddrInfo"></property>
</bean>
<bean id="AddrInfo" class="com.spring.domain.Addr">
    <property name="addr" value="中国山东"></property>
</bean>
property 标签为实体中的属性
  -- name 属性为实体属性的变量名
  -- value 属性为属性的值
  -- ref 当注入属性为对象时使用ref注入

第二种:使用静态工厂方法创建对象

工厂类

public class BeanFactory {
    public static User getUser() { return new User("小王", 19, new Addr("中国山东")); } 
}

此工静态工厂类的方法必须为static静态

<bean id="UserInfo2" class="com.spring.factory.BeanFactory" factory-method="getUser"></bean>
factory-method -- 静态工厂中,创建对象的方法
class -- 静态工厂的类的全限定名称

第三种:使用实例工厂方法创建对象

public class BeansFactory {
    public User getUser() {
        return new User("小王", 19, new Addr("中国山东"));
    }
}
<bean id="UserFactory" class="com.spring.factory.BeansFactory"></bean>
<bean id="UserInfo3" factory-bean="UserFactory" factory-method="getUser"></bean>
factory-bean -- 属性: 设置实例工厂对象的引用
factory-method -- 属性 : 设置实例工厂对象的方法,用于创建对象

第四种:构造函数注入<constructor-arg>

<!--基于 构造方法-->
<bean id="BeanUser" class="com.spring.domain.UserBean">
   <constructor-arg name="name" value="小孙"></constructor-arg>
   <constructor-arg name="age" value="9"></constructor-arg>
   <constructor-arg name="list">
       <array>
          <value>s1</value>
          <value>s2</value>
      </array>
   </constructor-arg>
</bean>

扩展 

 

上面根据构造注入时注入了一个list,下面扩展

get/set 方法的复杂类型注入(构造注入时相同)

可以注入任意的数据类型:

  • 基本数据类型及其包装类

  • 引用数据类型【所有写得类】枚举、数组、集合【Map、List、Set】

 

OC容器-实例化Bean、注入的4种配置方式(无注解方式)

原文:https://www.cnblogs.com/xiaozhang666/p/13619711.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!