IoC入门案例思路分析
1、管理什么?(Service与Dao)
2、如何将被管理的对象告知IoC容器?(配置)
3、被挂里的对象交给IoC容器,如何获取到IoC容器(接口)
4、IoC容器得到后,如何从容器中获取bean?(接口方法)
5、使用Spring导入哪些坐标?(pom.xml)
步骤1:创建Maven项目
步骤2:添加Spring的依赖jar包 到pom.xml (bean定义时的id属性在同一个上下文中不能重复)
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.2.10.RELEASE</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
步骤3:添加案例中需要的类
创建BookService,BookServiceImpl,BookDao和BookDaoImpl四个类
public interface BookDao {
public void save();
}
public class BookDaoImpl implements BookDao {
public void save() {
System.out.println("book dao save ...");
}
}
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();
}
}
步骤4:添加spring配置文件
resources下添加spring配置文件applicationContext.xml,并完成bean的配置
步骤5:在配置文件中完成bean的配置
<?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标签标示配置bean
id属性标示给bean起名字
class属性表示给bean定义类型
-->
<bean id="bookDao" class="com.ericw.dao.impl.BookDaoImpl"/>
<bean id="bookService" class="com.ericw.service.impl.BookServiceImpl"/>
</beans>
==注意事项:bean定义时id属性在同一个上下文中(配置文件)不能重复==
步骤6:获取IOC容器
使用Spring提供的接口完成IOC容器的创建,创建App类,编写main方法
public class App {
public static void main(String[] args) {
//获取IOC容器
ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
}
}
步骤7:从容器中获取对象进行方法调用
public class App2 {
public static void main(String[] args) {
// 获取IoC容器
ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
// 获取Bean
BookService bookService = (BookService) ctx.getBean("bookService");
// 运行输出bookservice
bookService.save();
}
}
步骤8:运行程序
测试结果为:
Spring的IOC入门案例已经完成,但是在BookServiceImpl
的类中依然存在BookDaoImpl
对象的new操作,它们之间的耦合度还是比较高,这块该如何解决,就需要用到下面的DI:依赖注入
。