DI (Dependency Injection):依赖注入是指在 Spring IOC 容器创建对象的过程中,将所依赖的对象通过配置进行注入。我们可以通过依赖注入的方式来降低对象间的耦合度。
在软件工程中,对象之间的耦合度就是对象之间的依赖性。对象之间的耦合越高,维护成本越高,因此对象的设计应使对象之间的耦合越小越好。
1.导入spring坐标
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.2.10.RELEASE</version>
</dependency>
2.新建 BookDao 及实现类
BookDao
public interface BookDao {
public void save();
}
BookDaoImpl
public class BookDaoImpl implements BookDao {
@Override
public void save() {
System.out.println("book dao -- save");
}
}
3.新建 BookService 及实现类
BookService
public interface BookService {
public void save();
}
BookServiceImpl
public class BookServiceImpl implements BookService {
@Override
public void save() {
System.out.println("book service -- save");
}
}
4.在 applicationContext.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">
<bean id="bookDao" class="com.badianboke.dao.impl.BookDaoImpl"></bean>
<bean id="bookService" class="com.badianboke.service.impl.BookServiceImpl">
<property name="bookDao" ref="bookDao"></property>
</bean>
</beans>
5.使用
提供set方法使用
public class BookServiceImpl implements BookService {
//private BookDao bookDao = new BookDaoImpl();
private BookDao bookDao;
public void setBookDao(BookDao bookDao) {
this.bookDao = bookDao;
}
@Override
public void save() {
System.out.println("book service -- save");
bookDao.save();
}
}
6.启动类
public static void main(String[] args){
ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
BookService bookService = (BookService) ctx.getBean("bookService");
bookService.save();
}