首页 > 编程语言 > 详细

spring中 属性注入的四种方式

时间:2020-06-19 11:26:17      阅读:90      评论:0      收藏:0      [点我收藏+]


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()); } }

结果

技术分享图片

spring中 属性注入的四种方式

原文:https://www.cnblogs.com/houchen/p/13162003.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!