目录
一:IOC入门案例实现思路分析
1.IOC容器管理什么?
2. 如何将被管理的对象告知 IOC 容器 ?
3.被管理的对象交给 IOC 容器,要想从容器中获取对象,就先得思考如何获取到 IOC 容器 ?
4.IOC 容器得到后,如何从容器中获取 bean?
5.使用 Spring 导入哪些坐标 ?
二:IOC容器入门案例代码实现
代码实现步骤如下:
2.在pom.xml中 添加 Spring 的依赖 ,添加的依赖如下:
3. 定义Spring管理的类和接口,创建 BookService,BookServiceImpl ,BookDao 和 BookDaoImpl 四个类
4.在resources文件目录下添加 spring 配置文件,完成 bean 的相关属性配置
ps:bean定义时,id属性在同一个上下文中不能重复
5. 使用 Spring 提供的接口完成 IOC 容器的创建
6. 从容器中获取对象进行方法调用
一:IOC入门案例实现思路分析
1.IOC容器管理什么?
肯定是对应的Bean,也就是原来造对的类,管理之后,将其放到IOC容器中,让其变成Bean,如Service 和 Dao。
2. 如何将被管理的对象告知 IOC 容器 ?
用配置文件来配置相关属性,来告知IOC容器·
3.被管理的对象交给 IOC 容器,要想从容器中获取对象,就先得思考如何获取到 IOC 容器 ?
Spring是一种技术,我们现在要用到它相关的东西,必然会通过一个接口让其使用,不然我们将如何操作使用
4.IOC 容器得到后,如何从容器中获取 bean?
用接口所提供的接口方法
5.使用 Spring 导入哪些坐标 ?
用别人的东西,就按照别人的要求来做事,需要在 pom.xml 添加对应的依赖
二:IOC容器入门案例代码实现
目标分析 : 将 BookServiceImpl 和 BookDaoImpl 交给 Spring 管理,并从容器中获取对应的 bean对象进行方法调用
代码实现步骤如下:
1. 创建 Maven 项目,项目结构如下
2.在pom.xml中 添加 Spring 的依赖 ,添加的依赖如下:
<dependencies>
<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>
</dependencies>
3. 定义Spring管理的类和接口,创建 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.在resources文件目录下添加 spring 配置文件,完成 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 定义类型
-->
<!--1.导入Spring的坐标spring-context,对应的版本号为5.2.10.RELEASE-->
<!---2.配置对应的bean->
<bean id = "bookDao" class ="com.itheima.dao.impl.BookDaoImpl"/>
<bean id = "bookService" class ="com.itheima.service.impl.BookServiceImpl"/>
</beans>
ps:bean定义时,id属性在同一个上下文中不能重复
5. 使用 Spring 提供的接口完成 IOC 容器的创建
public class App {
public static void main ( String [] args ) {
// 获取 IOC 容器
ApplicationContext ctx = new ClassPathXmlApplicationContext ( "applicationContext.xml" );
}
}
6. 从容器中获取对象进行方法调用
public class App {
public static void main ( String [] args ) {
//加载配置文件得到上下文对象,也就是容器对象
// 获取IOC容器
ApplicationContext ctx = new ClassPathXmlApplicationContext ( "applicationContext.xml" );
//获取Bean
// BookDao bookDao = (BookDao)ctx.getBean("bookDao");
// bookDao.save();
BookService bookService = ( BookService )ctx .getBean("bookService" );
bookService.save ();
}
}
结果:
问题:虽然IOC容器的入门案例实现了,但代码中还是存在着等于new的代码存在,没有实现充分解耦的效果,那么将如何实现呢,请看下节DI入门案例