IoC:Inverse of Control 控制反转 ,目的:解耦
AOP:Aspect Oriented Programming 面向切面编程
基于接口编程:service和dao之间高度耦合
基于工厂:解除service和dao之间的耦合,但是带来的工厂和dao的耦合
工厂+配置文件:解除了耦合,留下配置文件和dao/工厂耦合,这种耦合是我们期望的一种耦合方式
IoC 控制反转
- Inverse of Control
把对象的创建权从程序员自己new反转到了Spring容器创建并提供
- 导入Spring依赖坐标:spring-context-5.2.10.RELEASE
- 编写service/dao实现类和接口
- Spring核心配置文件中配置service/dao实现类
- 测试类中创建Spring容器对象,并通过对象获取service实现类对象
- 调用dao实现类对象的方法测试
2 编写service/dao实现类和接口 BookDao.java接口org.springframework spring-context 5.2.10.RELEASE
代码如下(示例):
package com.itheima.dao;
public interface BookDao {
public void save();
}
BookDaoImpl.java实现类
package com.itheima.dao.impl;
import com.itheima.dao.BookDao;
public class BookDaoImpl implements BookDao {
public void save() {
System.out.println("book dao save ...");
}
}
BookService接口
package com.itheima.service;
public interface BookService {
public void save();
}
BooKServiceImpl实现类
package com.itheima.service.impl;
import com.itheima.dao.BookDao;
import com.itheima.dao.impl.BookDaoImpl;
import com.itheima.service.BookService;
public class BookServiceImpl implements BookService {
private BookDao bookDao = new BookDaoImpl();
public void save() {
System.out.println("book service save ...");
bookDao.save();
}
}
3 新建Spring的配置文件并配置
resources 右键 选择 new--》xml configration file --》Spring config(前提是Spring的依赖已经成功导入)
配置文件名称任意,习惯写法applicationcontext.xml。本案中使用beans.xml
4 创建Spring容器对象并获取bean对象
package com.itheima;
import com.itheima.dao.BookDao;
import com.itheima.service.BookService;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class App2 {
public static void main(String[] args) {
//3.获取IoC容器
ApplicationContext ctx = new ClassPathXmlApplicationContext("beans.xml");
//4.获取bean(根据bean配置id获取)
// BookDao bookDao = (BookDao) ctx.getBean("bookDao");
// bookDao.save();
BookService bookService = (BookService) ctx.getBean("bookService");
bookService.save();
}
}



