Spring的属性注入(案例+解析)

    技术2022-07-20  66

    Spring的属性注入

    给Bean当中的属性设置值:

    一、普通类型的注入

    1、构造方法的方式的属性注入

    <?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"> <!-- Spring的属性注入的方式 --> <!-- 构造方法的方式 --> <bean id="car" class="com.itzheng.spring.demo4.Car"> <constructor-arg name="name" value="宝马"/> <constructor-arg name="price" value="800000"/> </bean> </beans> package com.itzheng.spring.demo4; public class Car { private String name; private Double price; public Car(String name, Double price) { super(); this.name = name; this.price = price; } @Override public String toString() { return "Car [name=" + name + ", price=" + price + "]"; } } package com.itzheng.spring.demo4; import org.junit.Test; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; /* * 属性注入的方式 */ public class SpringDemo4 { @Test public void demo1() { // 创建工程 ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml"); // 获得到对应XML当中的对象 Car car = (Car) applicationContext.getBean("car"); System.out.println(car); } }

    2、Set方法的方式的属性注入

    <?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"> <!-- Spring的属性注入的方式 --> <!-- 构造方法的方式 --> <!-- set方法方式符注入 --> <bean id="car2" class="com.itzheng.spring.demo4.Car2"> <property name="name" value="奔驰"></property> <property name="price" value="1000000"></property> </bean> </beans> package com.itzheng.spring.demo4; /* * set方法的属性注入 */ public class Car2 { private String name; private Double price; public void setName(String name) { this.name = name; } public void setPrice(Double price) { this.price = price; } @Override public String toString() { return "Car2 [name=" + name + ", price=" + price + "]"; } } /* set方法注入 */ @Test public void demo2() { // 创建工程 ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml"); // 获得到对应XML当中的对象 Car2 car2 = (Car2) applicationContext.getBean("car2"); System.out.println(car2); }

    二、对象类型注入

    1、set方法来注入对象

    创建类和对应的set方法

    package com.itzheng.spring.demo4; public class Employee { private String name; private Car2 car2; public void setName(String name) { this.name = name; } public void setCar2(Car2 car2) { this.car2 = car2; } @Override public String toString() { return "Employee [name=" + name + ", car2=" + car2 + "]"; } }

    设置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"> <!-- Spring的属性注入的方式 --> <!-- 构造方法的方式 --> <bean id="car" class="com.itzheng.spring.demo4.Car"> <constructor-arg name="name" value="宝马"/> <constructor-arg name="price" value="800000"/> </bean> <!-- set方法方式符注入 --> <bean id="car2" class="com.itzheng.spring.demo4.Car2"> <property name="name" value="奔驰"></property> <property name="price" value="1000000"></property> </bean> <!-- set方法去注入对象类型的属性 --> <bean id="employee" class="com.itzheng.spring.demo4.Employee"> <!-- value是用来设置普通类型的值。ref是用来设置其他类的id 或者name --> <property name="name" value="张三"/> <property name="car2" ref="car2"/> </bean> </beans>

    value是用来设置普通类型的值。 ref是用来设置其他类的id 或者name ref是另外一个普通类型

    2、构造方法来注入对象

    创建类和对应的构造方法

    package com.itzheng.spring.demo4; public class Boos { private String name; private Car car; public Boos(String name, Car car) { super(); this.name = name; this.car = car; } @Override public String toString() { return "Boos [name=" + name + ", car=" + car + "]"; } } <?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"> <!-- Spring的属性注入的方式 --> <!-- 构造方法的方式 --> <bean id="car" class="com.itzheng.spring.demo4.Car"> <constructor-arg name="name" value="宝马"/> <constructor-arg name="price" value="800000"/> </bean> <bean id="boos" class="com.itzheng.spring.demo4.Boos"> <constructor-arg name="name" value="李四"/> <constructor-arg name="car" ref="car"/> </bean> </beans>

    ref设置对应的类

    @Test public void demo3() { // 创建工程 ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml"); // 获得到对应XML当中的对象 Boos boos = (Boos) applicationContext.getBean("boos"); System.out.println(boos); }

    Processed: 0.020, SQL: 9