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();
    }
}
目录
相关文章
|
12天前
|
Java 测试技术 开发者
Spring IoC容器通过依赖注入机制实现控制反转
【4月更文挑战第30天】Spring IoC容器通过依赖注入机制实现控制反转
22 0
|
12天前
|
安全 Java 开发者
在Spring框架中,IoC和AOP是如何实现的?
【4月更文挑战第30天】在Spring框架中,IoC和AOP是如何实现的?
22 0
|
12天前
|
XML Java 程序员
什么是Spring的IoC容器?
【4月更文挑战第30天】什么是Spring的IoC容器?
20 0
|
13天前
|
存储 缓存 Java
【Spring系列笔记】依赖注入,循环依赖以及三级缓存
依赖注入: 是指通过外部配置,将依赖关系注入到对象中。依赖注入有四种主要方式:构造器注入、setter方法注入、接口注入以及注解注入。其中注解注入在开发中最为常见,因为其使用便捷以及可维护性强;构造器注入为官方推荐,可注入不可变对象以及解决循环依赖问题。本文基于依赖注入方式引出循环依赖以及三层缓存的底层原理,以及代码的实现方式。
23 0
|
15天前
|
Java Spring 容器
【Spring系列笔记】IOC与DI
IoC 和 DI 是面向对象编程中的两个相关概念,它们主要用于解决程序中的依赖管理和解耦问题。 控制反转是面向对象编程中的一种设计原则,可以用来减低计算机代码之间的耦合度。其中最常见的方式叫做依赖注入和依赖查找。
33 2
|
16天前
|
Java 测试技术 数据库连接
Spring中ioc的优点
总之,Spring中的IoC提供了一种更加灵活、可维护、可测试和可扩展的方式来管理组件之间的依赖关系,从而提高了应用程序的质量和可维护性。这使得开发人员能够更专注于业务逻辑而不是底层的技术细节。
32 1
|
XML Java API
Spring 依赖注入的方式,你了解哪些?
前言 依赖查找和依赖注入是 Spring 实现 IoC 容器提供的两大特性,相对于依赖查找,Spring 更推崇的是使用依赖注入,本篇先对 Spring 中依赖注入的几种方式进行介绍,后续再分享其实现。
199 0
Spring 依赖注入的方式,你了解哪些?
|
Java 测试技术 开发者
Spring 有哪几种依赖注入方式?官方是怎么建议使用的呢?
IDEA 提示 Field injection is not recommended 在使用IDEA 进行Spring 开发的时候,当你在字段上面使用@Autowired注解的时候,你会发现IDEA 会有警告提示:
256 0
Spring 有哪几种依赖注入方式?官方是怎么建议使用的呢?
|
Java Spring 容器
Spring中IoC两种接口和两种依赖注入方式的比较
spring是一个开源框架,是为了解决企业应用程序开发的复杂性而创建的,为J2EE应用程序开发提供集成的框架。简单来说,spring是一个轻量级的控制反转IOC和面向切面AOP的容器框架。spring框架会对定义在配置文件中的bean实例自动管理,这个bean也就是Java实例,Java组件,spring既可以管理标准的javabean,又可以管理普通的Java组件。   spring
1841 0