05-对象的依赖关系-依赖注入

本文深入解析Spring框架中依赖注入的多种方式,包括set方法注入、构造方法注入、p名称空间注入及spel注入,通过实例展示如何配置bean,实现不同类型的注入。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、set方法注入
value:表示值类型的注入
ref:表示对象类型的注入
pojo
public class Person {
private String name;
private Integer age;
private Car car;
}
public class Car {
private String name;
private String color;
}
bean配置



<bean name="person1" class="com.qfedu.spring.pojo.Person">
    <property name="name" value="helen"></property>
    <property name="age" value="18"></property>
    <property name="car" ref="car"></property>
</bean>  

二、构造方法注入
1、创建Person的有参构造方法
public Person(String name, Car car) {
super();
System.out.println(“构造方法 Person(String name, Car car)”);
this.name = name;
this.car = car;
}
配置bean




测试
@Test
public void testConstructor() {
AbstractApplicationContext context = new ClassPathXmlApplicationContext(“applicationContext-injection.xml”);
Person person2 = (Person)context.getBean(“person2”);
System.out.println(person2);
}

2、使用 index 指定参数的位置
pojo中有如下两个构造方法
public Person(String name, Car car) {
super();
System.out.println(“构造方法 Person(String name, Car car)”);
this.name = name;
this.car = car;
}

public Person(Car car, String name) {
    super();
    System.out.println("构造方法 Person(Car car, String name)");
    this.name = name;
    this.car = car;
}

配置bean:下面的配置会自动匹配 public Person(String name, Car car) 构造函数



3、使用type指定参数的类型
public Person(Car car, String name) {
super();
System.out.println(“构造方法 Person(Car car, String name)”);
this.name = name;
this.car = car;
}

public Person(Car car, Integer name) {
    super();
    System.out.println("构造方法 Person(Car car, Integer name)");
    this.name = name + "";
    this.car = car;
}

bean配置



三、p名称空间注入
导入名称空间
xmlns:p=“http://www.springframework.org/schema/p
使用 p: 属性注入:
p:属性名 表示值类型
p:属性名-ref 表示引用类型

典型案例:配置数据源

四、spel注入





测试
@Test
public void testSpel() {
AbstractApplicationContext context = new ClassPathXmlApplicationContext(“applicationContext-injection.xml”);
Person person4 = (Person)context.getBean(“person4”);
System.out.println(person4);
}

是否将当前网页翻译成中文 网页翻译

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值