IoC(Inversion of Control)控制反转:
使用对象时,由 new产生对象转换为 由外部提供对象,此过程中对象创建的控制权由程序转移到外部。
Spring技术对IoC思想进行了实现
Spring提供了一个容器,称为 IoC容器,来充当 IoC思想中的 “外部”
IoC容器负责对象的创建,初始化等一系列工作,被创建或管理的对象在 IoC容器中统称为 Bean
DI(Depandency Injection)依赖注入:
在容器中建立 bean 与 bean 之间的依赖关系的整个过程,称为依赖注入
下载 SpringAssistant 插件
pom中导入 spring坐标
org.springframework spring-context 5.2.10.RELEASE
新建一个 spring 的配置文件
// applicationContext.xml进行测试
public class App1 {
public static void main(String[] args) {
// 获取 IOC 容器
ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
// 获取 bean 这里实际上是获取了一个BookDaoImpl对象
// Object getBean(String var1)
// 以多态形式赋给了 Object 然后我们自己又强转为 BookDao接口来接收
// 我们知道 如果用 Object来接收,则 下面是不能执行 save 方法的
// 但不管怎么样, 类型一值都是 BookDaoImpl
BookDao bookDao = (BookDao) ctx.getBean("bookDao");
// 使用
bookDao.save();
}
}
DI
public class BookServiceImpl implements BookService{
// 这里不再用 new 去创建
// private BookDao bookDao1 = new BookDaoImpl();
private BookDao bookDao1;
public void save() {
System.out.println("book service save...");
bookDao1.save();
}
// 是 IoC 容器在执行
public void setBookDao1(BookDao bookDao1) {
this.bookDao1 = bookDao1;
}
}
这样就可以完成 BookServiceImpl 对象中,bookDao1 成员的初始化。
public class App1 {
public static void main(String[] args) {
// 获取 IOC 容器
ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
// 获取 bean
BookService bookService = (BookService) ctx.getBean("bookService");
// 使用
bookService.save();
}
}



