一、概念
造对象的时候如果使用传统的方法用new关键字,会造成耦合度过高,所以有了IoC思想,就是把对象交给外部(IoC)容器管理,通过配置文件的形式进行两者关联。
二、案例分析
在Services层调用Dao层的方法时,通过配置文件来获取对象
三、案例步骤
(1)新建一个maven 模块 创建两个包 dao 和 services 然后创建相应的接口来规范相应的类,在根包下创建测试类 基本 结构如下
(2)在pom.xml文件中导入 spring 坐标
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.2.4.RELEASE</version>
</dependency>
</dependencies>
(3)在resources文件夹下新建一个applicationContext.xml
(3) 在applicationContext.xml文件下配置 dao 和 serives 的bean
在App1类中加载ioc 容器 并且 根据配置文件中配置的id 获取相应的bean
四、源代码
BookDao接口
package com.itheima.dao;
public interface BookDao {
public void save1();
}
BookDaoImpl 类
package com.itheima.dao.impl;
import com.itheima.dao.BookDao;
public class BookDaoImpl implements BookDao {
@Override
public void save1() {
System.out.println("bookdao save-----");
}
}
BookServices 接口
package com.itheima.serives;
public interface BookServices {
public void save2();
}
BookSerivesImpl 类
package com.itheima.serives.impl;
import com.itheima.serives.BookServices;
public class BookSerivesImpl implements BookServices {
@Override
public void save2() {
System.out.println("bookserives dao");
}
}
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 随意取 class 为dao文件下的全路径 注意不是接口路径 -->
<bean id="bookDao" class="com.itheima.dao.impl.BookDaoImpl"/>
<!-- 配置serives层的bean id 随意取 class 为dao文件下的全路径 注意不是接口路径 -->
<bean id="bookSerives" class="com.itheima.serives.impl.BookSerivesImpl"/>
</beans>
App1类
package com.itheima;
import com.itheima.dao.BookDao;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class App1 {
public static void main(String[] args) {
// 加载ioc容器
ApplicationContext ac=new ClassPathXmlApplicationContext("applicationContext.xml");
// 根据传入的id在ioc容器中获取相应的bean
BookDao bookDao =(BookDao) ac.getBean("bookDao");
bookDao.save1();
}
}