IoC和DI

IoC和DI,第1张

Spring 核心概念

IoC(Inversion of Control)控制反转:
使用对象时,由 new产生对象转换为 由外部提供对象,此过程中对象创建的控制权由程序转移到外部。
Spring技术对IoC思想进行了实现
Spring提供了一个容器,称为 IoC容器,来充当 IoC思想中的 “外部”
IoC容器负责对象的创建,初始化等一系列工作,被创建或管理的对象在 IoC容器中统称为 Bean
DI(Depandency Injection)依赖注入:
在容器中建立 bean 与 bean 之间的依赖关系的整个过程,称为依赖注入

IoC 准备工作

下载 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();
    }
}

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/721315.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-25
下一篇 2022-04-25

发表评论

登录后才能评论

评论列表(0条)

保存