IoC(Inversion of Control)控制反转:
使用对象时,由 new产生对象转换为 由外部提供对象,此过程中对象创建的控制权由程序转移到外部。
Spring技术对IoC思想进行了实现
Spring提供了一个容器,称为 IoC容器,来充当 IoC思想中的 “外部”
IoC容器负责对象的创建,初始化等一系列工作,被创建或管理的对象在 IoC容器中统称为 Bean
DI(Depandency Injection)依赖注入:
在容器中建立 bean 与 bean 之间的依赖关系的整个过程,称为依赖注入
下载 SpringAssistant 插件
pom中导入 spring坐标
<dependency>
<groupId>org.springframeworkgroupId>
<artifactId>spring-contextartifactId>
<version>5.2.10.RELEASEversion>
dependency>
新建一个 spring 的配置文件
// applicationContext.xml
<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="bookDao" class="dao.BookDaoImpl"/>
<bean id="bookService" class="service.BookServiceImpl"/>
beans>
进行测试
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;
}
}
<bean id="bookDao" class="dao.BookDaoImpl"/>
<bean id="bookService" class="service.BookServiceImpl">
<property name="bookDao1" ref="bookDao"/>
bean>
这样就可以完成 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();
}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)