有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 -- 属性 : 设置实例工厂对象的方法,用于创建对象
<!--基于 构造方法--> <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】
原文:https://www.cnblogs.com/xiaozhang666/p/13619711.html