IOC案例讲解
实现步骤
1 2 3 4
| 【第一步】导入Spring坐标。 【第二步】定义Spring管理的类(接口)。 【第三步】创建Spring配置文件,配置对应类作为Spring管理的bean对象。 【第四步】初始化IOC容器(Spring核心容器/Spring容器),通过容器获取bean对象。
|
实现代码
导入Spring坐标
1 2 3 4 5 6 7 8
| <dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>5.2.10.RELEASE</version> </dependency> </dependencies>
|
定义Spring管理的类(接口)
- BookDao接口和BookDaoImpl实现类:
1 2 3 4 5 6 7 8 9
| public interface BookDao { public void save(); }
public class BookDaoImpl implements BookDao { public void save() { System.out.println("book dao save ..."); } }
|
- BookService接口和BookServiceImpl实现类:
1 2 3 4 5 6 7 8 9 10 11
| public interface BookService { public void save(); }
public class BookServiceImpl implements BookService { private BookDao bookDao = new BookDaoImpl(); public void save() { System.out.println("book service save ..."); bookDao.save(); } }
|
配置Spring管理的bean对象
- 定义applicationContext.xml配置文件并配置BookServiceImpl:
1 2 3 4 5 6 7 8 9 10 11 12 13
| <?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="bookService" class="edu.heuet.service.impl.BookServiceImpl"></bean>
</beans>
|
- 注意事项:bean定义时id属性在同一个上下文中(IOC容器中)不能重复
通过容器获取Bean对象
1 2 3 4 5 6 7 8 9 10
| public class App { public static void main(String[] args) { ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml"); BookService bookService= (BookService)ctx.getBean("bookService"); bookService.save(); } }
|
运行结果
DI案例讲解
实现步骤
1 2 3
| 【第一步】删除使用new的形式创建对象的代码。 【第二步】提供依赖对象对应的setter方法。 【第三步】配置service与dao之间的关系。
|
实现代码
删除使用new创建对象的代码
1 2 3 4 5 6 7
| public class BookServiceImpl implements BookService { private BookDao bookDao; public void save() { System.out.println("book service save ..."); bookDao.save(); } }
|
提供依赖对象对应的setter方法
1 2 3 4 5 6 7 8 9 10 11
| public class BookServiceImpl implements BookService { private BookDao bookDao; public void save() { System.out.println("book service save ..."); bookDao.save(); } public void setBookDao(BookDao bookDao) { this.bookDao = bookDao; } }
|
配置service与dao之间的关系
在applicationContext.xml中配置
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| <?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="edu.heuet.dao.impl.BookDaoImpl"/>
<bean id="bookService" class="edu.heuet.service.impl.BookServiceImpl">
<property name="bookDao" ref="bookDao"/> </bean> </beans>
|
图解演示