0.前期准备
创建Person类
package com.hy.spring.pojo;
public class Person {
@Override
public String toString() {
return "Person [name=" + name + ", age=" + age + ", mycar=" + mycar + "]";
}
private String name;
private Integer age;
private Car mycar;
public Person() {
super();
System.out.println("构造方法被调用");
}
public Person(String name, Integer age, Car mycar) {
this.name=name;
this.age=age;
this.mycar=mycar;
System.out.println("构造方法Person(String name, Integer age, Car mycar)被调用");
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public Car getMycar() {
return mycar;
}
public void setMycar(Car mycar) {
this.mycar = mycar;
}
}
创建Car类
package com.hy.spring.pojo;
public class Car {
private String name;
private String color;
@Override
public String toString() {
return "Car [name=" + name + ", color=" + color + "]";
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
}
1. set方式注入
applicationContxt.xml的配置
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
<!-- bean:使容器创建对象 -->
<!--bean name: 相当于变量名 Person person=new Person(); -->
<!-- class:类的全类名(全限定名) -->
<!-- property name: 表示bean对应的类中有这个值的属性,value为你想通过set方法设置的这个属性的值 -->
<!------------------->
<!-- 注意:如果你想设置的property name并不是一个单一属性,比如这里的属性mycar,为Car类型的,后面设置的时候通过,ref实现,而不是简单的value了-->
<bean name="car" class="com.hy.spring.pojo.Car">
<property name="name" value="BMW"></property>
<property name="color" value="red"></property>
</bean>
<bean name="person" class="com.hy.spring.pojo.Person">
<property name="name" value="Tom"></property>
<property name="age" value="18"></property>
<property name="mycar" ref="car"></property>
</bean>
</beans>
测试
package com.hy.spring.pojo;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class Test {
@Test
public void SetTest() {
ApplicationContext context=new ClassPathXmlApplicationContext("applicationContext.xml");
Person person=(Person)context.getBean("person");
System.out.println(person);
}
}
2. 构造方法注入
applicationContxt.xml的配置
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd">
<bean name="car" class="com.hy.spring.pojo.Car">
<property name="name" value="BMW"></property>
<property name="color" value="red"></property>
</bean>
<!-- 也可用index实现-->
<!--
<bean name="person" class="com.hy.spring.pojo.Person">
<constructor-arg index="0" value="Tom"></constructor-arg>
<constructor-arg index="1" value="18"></constructor-arg>
<constructor-arg index="2" ref="car"></constructor-arg>
</bean>
-->
<bean name="person" class="com.hy.spring.pojo.Person">
<constructor-arg name="name" value="Tom"></constructor-arg>
<constructor-arg name="age" value="18"></constructor-arg>
<constructor-arg name="mycar" ref="car"></constructor-arg>
</bean>
</beans>
测试
package com.hy.spring.pojo;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class Test {
@Test
public void ConstructorTest() {
ApplicationContext context=new ClassPathXmlApplicationContext("applicationContext.xml");
Person person=(Person)context.getBean("person");
System.out.println(person);
}
}
3. p注入
applicationContxt.xml的配置
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd">
<!--注意要加上 xmlns:p="http://www.springframework.org/schema/p" -->
<bean name="car" class="com.hy.spring.pojo.Car">
<property name="name" value="BMW"></property>
<property name="color" value="red"></property>
</bean>
<bean name="personp" class="com.hy.spring.pojo.Person"
p:name="pTom"
p:age="23"
p:mycar-ref="car">
</bean>
</beans>
测试
package com.hy.spring.pojo;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class Test {
@Test
public void PTest() {
ApplicationContext context=new ClassPathXmlApplicationContext("applicationContext.xml");
Person person=(Person)context.getBean("personp");
System.out.println(person);
}
}
4. 表达式注入
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd">
<bean name="car" class="com.hy.spring.pojo.Car">
<property name="name" value="BMW"></property>
<property name="color" value="red"></property>
</bean>
<!-- set方法注入-->
<bean name="person" class="com.hy.spring.pojo.Person">
<property name="name" value="Tom"></property>
<property name="age" value="18"></property>
<property name="mycar" ref="car"></property>
</bean>
<bean name="Elperson" class="com.hy.spring.pojo.Person">
<property name="name" value="#{person.name}"></property>
<property name="age" value="#{person.age}"></property>
<property name="mycar" ref="car"></property>
</bean>
</beans>
测试
package com.hy.spring.pojo;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class Test {
@Test
public void ElTest() {
ApplicationContext context=new ClassPathXmlApplicationContext("applicationContext.xml");
Person person=(Person)context.getBean("Elperson");
System.out.println(person);
}
}