1、set方法注入
配置:
<!-- set 方式屬性注入 --> <bean name="user" class="cn.itcast.bean.User"> <!--為User對象中 名為name的屬性注入 tom 作為值 --> <!-- 值類型注入 --> <property name="name" value="tom"></property> <property name="age" value="18"></property> <!-- 引用類型注入 --> <property name="car" ref="car"></property> </bean> <!-- 將Car對象配置到容器中 --> <bean name="car" class="cn.itcast.bean.Car"> <property name="name" value="蘭博基尼"></property> <property name="color" value="黃色"></property> </bean>
//測試demo public class Demo { @Test public void test(){ //1、創建容器對象 ApplicationContext ac =new ClassPathXmlApplicationContext("cn/itcast/injection/applicationContext.xml"); //2、像容器要User對象 User user = (User)ac.getBean("user"); //3、打印user對象 System.out.println(user.toString()); } }
結果:
2、構造方法注入
配置:
<!-- 構造函數注入 --> <bean name="user1" class="cn.itcast.bean.User"> <constructor-arg name="name" value="jerry"></constructor-arg> <constructor-arg name="car" ref="car"></constructor-arg> </bean>
實體:
package cn.itcast.bean; public class User { private String name; private Integer age; private Car car; public User(String name, Car car) { System.out.println("User(String name, Car car)"); this.name = name; this.car = car; } public User(Integer name, Car car) { System.out.println("User(Integer name, Car car)"); this.name = name+""; this.car = car; } public User(){ System.out.println("user對象空參構造"); } 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 getCar() { return car; } public void setCar(Car car) { this.car = car; } @Override public String toString() { return "User [name=" + name + ", age=" + age + ", car=" + car.toString() + "]"; } }
demo
public class Demo { @Test public void test(){ //1、創建容器對象 ApplicationContext ac =new ClassPathXmlApplicationContext("cn/itcast/injection/applicationContext.xml"); //2、像容器要User對象 User user = (User)ac.getBean("user1"); //3、打印user對象 System.out.println(user.toString()); } }
結果
由 name+index + type 可以任意指定一個構造參數
<!-- 構造函數注入 --> <bean name="user1" class="cn.itcast.bean.User"> <!--name屬性: 構造參數的參數名 --> <!--name屬性: 構造參數的索引 --> <!--name屬性: 構造參數的類型 --> <constructor-arg name="name" index="0" type="java.lang.Integer" value="jerry"></constructor-arg> <constructor-arg name="car" ref="car"></constructor-arg> </bean>
3、p名稱空間注入
配置
<!-- p名稱空間注入 --> <!-- 1、導入p名稱空間 xmlns="http://www.springframework.org/schema/beans" 2、使用 p:屬性 完成屬性注入 值類型 p:屬性名=值 對象類型: p:屬性名-ref ="對象名稱" --> <bean name="user3" class="cn.itcast.bean.User" p:name="jack" p:age="20" p:car-ref="car"> </bean>
demo
public class Demo { @Test public void test(){ //1、創建容器對象 ApplicationContext ac =new ClassPathXmlApplicationContext("cn/itcast/injection/applicationContext.xml"); //2、像容器要User對象 User user = (User)ac.getBean("user3"); //3、打印user對象 System.out.println(user.toString()); } }
結果:
4、spel注入
配置:
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.springframework.org/schema/beans" xmlns:p="http://www.springframework.org/schema/p" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.2.xsd "> <!-- set 方式屬性注入 --> <bean name="user" class="cn.itcast.bean.User"> <!--為User對象中 名為name的屬性注入 tom 作為值 --> <property name="name" value="tom"></property> <property name="age" value="18"></property> <property name="car" ref="car"></property> </bean> <!-- 將Car對象配置到容器中 --> <bean name="car" class="cn.itcast.bean.Car"> <property name="name" value="蘭博基尼"></property> <property name="color" value="黃色"></property> </bean> <!-- 構造函數注入 --> <bean name="user1" class="cn.itcast.bean.User"> <!--name屬性: 構造參數的參數名 --> <!--name屬性: 構造參數的索引 --> <!--name屬性: 構造參數的類型 --> <constructor-arg name="name" index="0" type="java.lang.Integer" value="18"></constructor-arg> <constructor-arg name="car" ref="car"></constructor-arg> </bean> <!-- p名稱空間注入 --> <!-- 1、導入p名稱空間 xmlns="http://www.springframework.org/schema/beans" 2、使用 p:屬性 完成屬性注入 值類型 p:屬性名=值 對象類型: p:屬性名-ref ="對象名稱" --> <bean name="user3" class="cn.itcast.bean.User" p:name="jack" p:age="20" p:car-ref="car"> </bean> <!-- spel 注入 --> <bean name="user4" class="cn.itcast.bean.User"> <property name="name" value="#{user.name}"></property> <property name="age" value="#{12}"></property> <property name="car" ref="car"></property> </bean> </beans>
demo
public class Demo { @Test public void test(){ //1、創建容器對象 ApplicationContext ac =new ClassPathXmlApplicationContext("cn/itcast/injection/applicationContext.xml"); //2、像容器要User對象 User user = (User)ac.getBean("user4"); //3、打印user對象 System.out.println(user.toString()); } }
結果