IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> IoC和DI -> 正文阅读

[Java知识库]IoC和DI

Spring 核心概念

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

IoC

准备工作

下载 SpringAssistant 插件
pom中导入 spring坐标

<!--导入 Spring 坐标-->
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context</artifactId>
    <version>5.2.10.RELEASE</version>
</dependency>

新建一个 spring 的配置文件

// 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 指定全限定名-->
    <bean id="bookDao" class="dao.BookDaoImpl"/>    <!-- dao层实现类 -->
    <bean id="bookService" class="service.BookServiceImpl"/>    <!-- service层实现类 -->

</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"/>    <!-- dao层实现类 -->
    <bean id="bookService" class="service.BookServiceImpl">     <!-- service层实现类 -->
        <!--property 表示配置当前 bean 的属性-->
        <!--name 指定要配置 BookServiceImpl 类中的哪一个属性-->
        <!--ref表示 参照哪一个 bean-->
        <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();
    }
}
  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2022-04-23 10:43:02  更:2022-04-23 10:46:35 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 5:06:10-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码