Spring - IOC(控制反转) & DI(依赖注入)

简介: Spring - IOC(控制反转) & DI(依赖注入)

image.pngimage.pngimage.pngimage.png


一、IOC(控制反转)


image.pngimage.pngimage.png


二、DI(依赖注入)

DI Dependency Injection 依赖注入的概念,就是在Spring创建这个对象的过程中,将这个对象所依赖的属性注入进去。


三、BeanFactory & ApplicationContext

(1)BeanFactory

1、无国际化功能

2、getBean 时才实例化对象

(2)ApplicationContext

1、有国际化功能

2、加载配置文件时,就把所有单例模式的Bean实例化好,如果是多例模式的话,就等getBean的时候再实例化好


四、工程读取文件 & 磁盘读取文件

(1)工程读取文件

1、ClassPathXmlApplicationContext

2、ClassPathResource


(2)磁盘读取文件

1、FileSystemXmlApplicationContext

2、FileSystemResource

代码:

<?xmlversion="1.0"encoding="UTF-8"?><beansxmlns="http://www.springframework.org/schema/beans"xmlns:p="http://www.springframework.org/schema/p"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"><!--UserService的创建权交给了Spring--><beanid="userService"class="com.imooc.ioc.demo1.UserServiceImpl"><propertyname="name"value="李四"/></bean></beans>
packagecom.imooc.ioc.demo1;
/*** Created by jt on 2017/10/8.*/publicinterfaceUserService {
publicvoidsayHello();
}
packagecom.imooc.ioc.demo1;
/*** Created by jt on 2017/10/8.*/publicclassUserServiceImplimplementsUserService{
// 添加属性:privateStringname;
publicvoidsayHello() {
System.out.println("Hello Spring"+name);
    }
publicStringgetName() {
returnname;
    }
publicvoidsetName(Stringname) {
this.name=name;
    }
}
packagecom.imooc.ioc.demo1;
importorg.junit.Test;
importorg.springframework.beans.factory.BeanFactory;
importorg.springframework.beans.factory.xml.XmlBeanFactory;
importorg.springframework.context.ApplicationContext;
importorg.springframework.context.annotation.Bean;
importorg.springframework.context.support.ClassPathXmlApplicationContext;
importorg.springframework.context.support.FileSystemXmlApplicationContext;
importorg.springframework.core.io.ClassPathResource;
importorg.springframework.core.io.FileSystemResource;
/*** Created by jt on 2017/10/8.*/publicclassSpringDemo1 {
@Test/*** 传统方式开发*/publicvoiddemo1(){
// UserService userService = new UserServiceImpl();UserServiceImpluserService=newUserServiceImpl();
// 设置属性:userService.setName("张三");
userService.sayHello();
    }
@Test/*** Spring的方式实现*/publicvoiddemo2(){
// 创建Spring的工厂ApplicationContextapplicationContext=newClassPathXmlApplicationContext("applicationContext.xml");
// 通过工厂获得类:UserServiceuserService= (UserService) applicationContext.getBean("userService");
userService.sayHello();
    }
@Test/*** 读取磁盘系统中的配置文件*/publicvoiddemo3(){
// 创建Spring的工厂类:ApplicationContextapplicationContext=newFileSystemXmlApplicationContext("c:\\applicationContext.xml");
// 通过工厂获得类:UserServiceuserService= (UserService) applicationContext.getBean("userService");
userService.sayHello();
    }
@Test/*** 传统方式的工厂类:BeanFactory*/publicvoiddemo4(){
// 创建工厂类:BeanFactorybeanFactory=newXmlBeanFactory(newClassPathResource("applicationContext.xml"));
// 通过工厂获得类:UserServiceuserService= (UserService) beanFactory.getBean("userService");
userService.sayHello();
    }
@Test/*** 传统方式的工厂类:BeanFactory*/publicvoiddemo5(){
// 创建工厂类:BeanFactorybeanFactory=newXmlBeanFactory(newFileSystemResource("c:\\applicationContext.xml"));
// 通过工厂获得类:UserServiceuserService= (UserService) beanFactory.getBean("userService");
userService.sayHello();
    }
}
目录
相关文章
|
1月前
|
XML Java 测试技术
《深入理解Spring》:IoC容器核心原理与实战
Spring IoC通过控制反转与依赖注入实现对象间的解耦,由容器统一管理Bean的生命周期与依赖关系。支持XML、注解和Java配置三种方式,结合作用域、条件化配置与循环依赖处理等机制,提升应用的可维护性与可测试性,是现代Java开发的核心基石。
|
9月前
|
XML Java 测试技术
Spring IOC—基于注解配置和管理Bean 万字详解(通俗易懂)
Spring 第三节 IOC——基于注解配置和管理Bean 万字详解!
627 26
|
5月前
|
XML 人工智能 Java
Spring IOC 到底是什么?
IOC(控制反转)是一种设计思想,主要用于解耦代码,简化依赖管理。其核心是将对象的创建和管理交给容器处理,而非由程序直接硬编码实现。通过IOC,开发者无需手动new对象,而是由框架负责实例化、装配和管理依赖对象。常见应用如Spring框架中的BeanFactory和ApplicationContext,它们实现了依赖注入和动态管理功能,提升了代码的灵活性与可维护性。
188 1
|
XML Java 数据格式
京东一面:spring ioc容器本质是什么? ioc容器启动的步骤有哪些?
京东一面:spring ioc容器本质是什么? ioc容器启动的步骤有哪些?
|
6月前
|
XML Java 数据格式
Spring IoC容器的设计与实现
Spring 是一个功能强大且模块化的 Java 开发框架,其核心架构围绕 IoC 容器、AOP、数据访问与集成、Web 层支持等展开。其中,`BeanFactory` 和 `ApplicationContext` 是 Spring 容器的核心组件,分别定位为基础容器和高级容器,前者提供轻量级的 Bean 管理,后者扩展了事件发布、国际化等功能。
|
11月前
|
XML Java 数据格式
【SpringFramework】Spring IoC-基于XML的实现
本文主要讲解SpringFramework中IoC和DI相关概念,及基于XML的实现方式。
240 69
|
8月前
|
Java 容器 Spring
什么是Spring IOC 和DI ?
IOC : 控制翻转 , 它把传统上由程序代码直接操控的对象的调用权交给容 器,通过容器来实现对象组件的装配和管理。所谓的“控制反转”概念就是对组件对象控制权的转 移,从程序代码本身转移到了外部容器。 DI : 依赖注入,在我们创建对象的过程中,把对象依赖的属性注入到我们的类中。
|
11月前
|
Java Spring 容器
【SpringFramework】Spring IoC-基于注解的实现
本文主要记录基于Spring注解实现IoC容器和DI相关知识。
178 21
|
11月前
|
存储 Java 应用服务中间件
【Spring】IoC和DI,控制反转,Bean对象的获取方式
IoC,DI,控制反转容器,Bean的基本常识,类注解@Controller,获取Bean对象的常用三种方式
383 12
|
XML Java 数据格式
Spring5入门到实战------7、IOC容器-Bean管理XML方式(外部属性文件)
这篇文章是Spring5框架的实战教程,主要介绍了如何在Spring的IOC容器中通过XML配置方式使用外部属性文件来管理Bean,特别是数据库连接池的配置。文章详细讲解了创建属性文件、引入属性文件到Spring配置、以及如何使用属性占位符来引用属性文件中的值。
Spring5入门到实战------7、IOC容器-Bean管理XML方式(外部属性文件)

热门文章

最新文章