前言
依赖注入(dependency injection)是IoC控制反转的一种具体实现
一、DI实现的两种方法
1、set方法注入
- 创建类,定义类属性,在类中实现setter方法
public void setName(String name){
this.name = name;
}
public void setAuthor(String author){
this.author = author;
}
- 创建xml配置文件,实现依赖注入配置
<!--1 基于set方法完成属性注入-->
<bean id="book" class="com.cx.spring6.iocxml.di.Book">
<property name="name" value="飞刀,又见飞刀"></property>
<property name="author" value="古龙"></property>
</bean>
- 解析配置文件,创建对象
@Test
public void testSet(){
//
ApplicationContext context = new ClassPathXmlApplicationContext("bean-di.xml");
//
Book book = (Book) context.getBean("book",Book.class);
//
System.out.println(book);
}
- 测试是否实现属性注入
2、构造器方法注入
第一步同上,只不过需要创建有参构造方法
public Book(){
System.out.println("默认调用无参构造方法");
}
public Book(String name,String author){
System.out.println("当然可以调用有参构造方法啦");
this.name = name;
this.author = author;
}
后面几步除配置文件内属性注入使用的标签不同以外,其余跟set方法相同
<!--2 基于构造器完成属性注入-->
<bean id="book2" class="com.cx.spring6.iocxml.di.Book">
<constructor-arg name="name" value="活着"></constructor-arg>
<constructor-arg name="author" value="余华"></constructor-arg>
</bean>