title: spring中的实体类属性注入
date: 2018-2-27 22:25:41
categories: Spring
tags: Spring
xl_echo编辑整理,欢迎转载,转载请声明文章来源。更多案例、资料请联系QQ:1280023003
spring中的实体类属性注入
配置文件application.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN"
"http://www.springframework.org/dtd/spring-beans-2.0.dtd">
<beans>
<!-- id自定义,class为类的全路径 -->
<bean id="userService" class="com.echo.ioc.IUserServiceImp">
<!-- 依赖注入配合实现类的get/set方法, 会输出注入的内容-->
<property name="info" value="ECHO"></property>
</bean>
<!-- id和name的区别,id是唯一的,并且id遵循xml规范,name取名范围更广,但是两个都可以用 -->
<bean name="bean" class="com.echo.bean.Bean"></bean>
<!-- 静态工厂方法 -->
<bean name="bean1" class="com.echo.bean.Bean1Factory" factory-method="createBean"></bean>
<!-- 实例工厂方法 -->
<bean name="bean2Factory" class="com.echo.bean.Bean2Factory"></bean>
<bean name="bean2" factory-bean="bean2Factory" factory-method="createBean2"></bean>
<!-- 构造方法注入 -->
<bean id="card" class="com.echo.carBean.Card">
<constructor-arg index="0" type="java.lang.String" value="宝马525"></constructor-arg>
<constructor-arg index="1" type="double" value="500000"></constructor-arg>
</bean>
<!-- setter方法注入 -->
<bean id="card1" class="com.echo.carBean.Card">
<property name="name" value="北京现代"></property>
<property name="price" value="100000"></property>
</bean>
<!-- 在一个实体类中引入类外一个实体类 -->
<bean id="person" class="com.echo.carBean.Person">
<property name="name" value="肖乐"></property>
<property name="card" ref="card"></property>
</bean>
<!-- 集合属性注入 -->
<bean id="collectionTest" class="com.echo.carBean.Collection">
<property name="list">
<list>
<value>张三</value>
<value>lisi</value>
<value>10</value>
<ref bean="card"/>
</list>
</property>
<property name="set">
<set>
<value>王五</value>
<value>10</value>
<ref bean="person"/>
</set>
</property>
<property name="map">
<map>
<entry key="username" value="肖乐"></entry>
</map>
</property>
<property name="props">
<props>
<prop key="user">echo</prop>
<prop key="price">10000</prop>
</props>
</property>
</bean>
</beans>
实体类card、person、collection
package com.echo.carBean;
public class Card {
private String name;
private double price;
public Card(){
}
public Card(String name, double price) {
super();
this.name = name;
this.price = price;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public double getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
}
}
package com.echo.carBean;
import java.util.List;
import java.util.Map;
import java.util.Properties;
import java.util.Set;
public class Collection {
private List list;
private Set set;
private Map map;
private Object[] objs;
private Properties props;
public List getList() {
return list;
}
public void setList(List list) {
this.list = list;
}
public Set getSet() {
return set;
}
public void setSet(Set set) {
this.set = set;
}
public Map getMap() {
return map;
}
public void setMap(Map map) {
this.map = map;
}
public Object[] getObjs() {
return objs;
}
public void setObjs(Object[] objs) {
this.objs = objs;
}
public Properties getProps() {
return props;
}
public void setProps(Properties props) {
this.props = props;
}
}
package com.echo.carBean;
public class Person {
private String name;
private Card card;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Card getCard() {
return card;
}
public void setCard(Card card) {
this.card = card;
}
}
测试类代码
package com.echo.carBean;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class CardTest {
@Test
/**
* 测试构造方法注入
*/
public void Test(){
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
Card card = (Card) applicationContext.getBean("card");
System.out.println(card.getName() + " : " + card.getPrice());
}
@Test
/**
* 测试setter方法注入(注意,他需要无参构造)
*/
public void Test1(){
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
Card card = (Card) applicationContext.getBean("card1");
System.out.println(card.getName() + " : " + card.getPrice());
}
@Test
/**
* 测试在一个实体类中引入类外一个实体类
*/
public void Test2(){
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
Person person = (Person) applicationContext.getBean("person");
System.out.println(person.getName() + " : " + person.getCard().getName() + person.getCard().getPrice());
}
@Test
/**
* 集合List属性注入
*/
public void Test3(){
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
Collection cl = (Collection) applicationContext.getBean("collectionTest");
System.out.println(cl.getList());
}
@Test
/**
* 集合Set属性注入
*/
public void Test4(){
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
Collection cl = (Collection) applicationContext.getBean("collectionTest");
System.out.println(cl.getSet());
}
@Test
/**
* 集合Map属性注入
*/
public void Test5(){
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
Collection cl = (Collection) applicationContext.getBean("collectionTest");
System.out.println(cl.getMap());
}
@Test
/**
* 集合Properties属性注入
*/
public void Test6(){
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
Collection cl = (Collection) applicationContext.getBean("collectionTest");
System.out.println(cl.getProps());
}
}