0101-ioc

2024-04-02 18:08
文章标签 ioc 0101

本文主要是介绍0101-ioc,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

背景

ioc是spring的基础,即控制反转。springboot基于注解使用ioc.

ioc

spring称所有被管理的对象为bean,

spring ioc主要通过描述的方式完成3类bean的管理工作:

基本功能说明
发布对象包扫描业务bean,javaConfig或者xml的方式配置第三方bean
获取对象BeanFactory或者ApplicationContext的子类获取bean
依赖注入对象通过关键字@Autowired,属性注入,构造函数注入,方法注入

spring ioc的核心接口是BeanFactory和ApplicationContext ;

BeanFactoryApplicationContext
获取bean的方法等同
判断是否是单例或者原型等同
类型匹配等同
获取bean的类型和别名等同
--MessageResource消息国际化功能
--EnvironmentCapable环境可配置
--ApplicationEventPublisher应用事件发布
--ResourcePatternResolver资源模式解析

来个例子,发布和获取bean;

TODO

通过@ComponentSacn发布Bean

@ComponentScan源码阅读

主要方法说明
basePackages扫描的包路径
basePackageClasses扫描的javaConfig类
includeFilters包含的bean的过滤器
excludeFilters排除的bean的过滤器
lazyInit是否延迟初始化

javaConfig方式或者xml方式定义第三方Bean发布

javaConfig方式主要是增加@Configuration 和 @Bean注解来发布;

>xml方式需要通过注解@ImportResource来引入

条件装配bean @Conditional(Condition实现类)

依赖注入

通过@Autowired来描述

通过@Primary和@Quelifier来消除歧义。

具体的依赖注入方式有 属性,构造函数,方法;

bean的生命周期

bean定义 -> bean初始化 ->bean生存期->bean销毁

bean定义:通过@ComponentScan扫描得到资源信息,从资源中解析出定义信息,然后把定义发布到spring容器中;

bean的初始化:创建bean,完成依赖注入,setBeanName,setBeanFactory,@PostConstruct标注的方法,postProcessorBeforeInitialzerion方法,setApplicationContext方法,afterPropertiesSet方法,postProcessorAfterInitialization方法;

bean生存期: 运行阶段直接使用

bean销毁: @PreDesctroy标注的方法,destory方法;

生命周期相关的扩展接口说明
BeanNameAware设置bean的名称
BeanFactoryAware获取BeanFactory
ApplicationContextAware获取ApplicationContext
InitializingBean初始化bean
DisposableBean销毁bean
BeanPostProcessor所有ben的公共增强

属性文件

引入依赖:

spring-boot-configuration-processor;然后使用@Value(“${xxx}”)来引用即可;

或者通过@ConfigurationProperties(“xxx”)直接组装到自定义类中;

还可以使用SpringEL来处理属性配置:

@Value("#{T(System).currentTimeMillis()}")

Bean作用域

作用域说明
singleton单例,全局唯一
prototype原型,每次创建
session每个http会话创建一个
application同单例
request每次请求创建一个

Profile

指明不同环境下启用的bean,springboot不同的profile对应不同的application-profile.yaml文件;

原创不易,转载请注明出处,欢迎多沟通交流

这篇关于0101-ioc的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/870695

相关文章

spring IOC的理解之原理和实现过程

《springIOC的理解之原理和实现过程》:本文主要介绍springIOC的理解之原理和实现过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、IoC 核心概念二、核心原理1. 容器架构2. 核心组件3. 工作流程三、关键实现机制1. Bean生命周期2.

Spring 基于XML配置 bean管理 Bean-IOC的方法

《Spring基于XML配置bean管理Bean-IOC的方法》:本文主要介绍Spring基于XML配置bean管理Bean-IOC的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一... 目录一. spring学习的核心内容二. 基于 XML 配置 bean1. 通过类型来获取 bean2. 通过

Spring IOC的三种实现方式详解

《SpringIOC的三种实现方式详解》:本文主要介绍SpringIOC的三种实现方式,在Spring框架中,IOC通过依赖注入来实现,而依赖注入主要有三种实现方式,构造器注入、Setter注入... 目录1. 构造器注入(Cons编程tructor Injection)2. Setter注入(Setter

Spring IOC控制反转的实现解析

《SpringIOC控制反转的实现解析》:本文主要介绍SpringIOC控制反转的实现,IOC是Spring的核心思想之一,它通过将对象的创建、依赖注入和生命周期管理交给容器来实现解耦,使开发者... 目录1. IOC的基本概念1.1 什么是IOC1.2 IOC与DI的关系2. IOC的设计目标3. IOC

Spring核心思想之浅谈IoC容器与依赖倒置(DI)

《Spring核心思想之浅谈IoC容器与依赖倒置(DI)》文章介绍了Spring的IoC和DI机制,以及MyBatis的动态代理,通过注解和反射,Spring能够自动管理对象的创建和依赖注入,而MyB... 目录一、控制反转 IoC二、依赖倒置 DI1. 详细概念2. Spring 中 DI 的实现原理三、

Spring6详细学习笔记(IOC+AOP)

一、Spring系统架构介绍 1.1、定义 Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器(框架)。Spring官网 Spring是一款主流的Java EE 轻量级开源框架,目的是用于简化Java企业级引用的开发难度和开发周期。从简单性、可测试性和松耦合度的角度而言,任何Java应用都可以从Spring中受益。Spring框架提供自己提供功能外,还提供整合其他技术和框架

spring ioc容器的原理

1. IoC理论的背景 我们都知道,在采用面向对象方法设计的软件系统中,它的底层实现都是由N个对象组成的,所有的对象通过彼此的合作,最终实现系统的业务逻辑。 图1:软件系统中耦合的对象 如果我们打开机械式手表的后盖,就会看到与上面类似的情形,各个齿轮分别带动时针、分针和秒针顺时针旋转,从而在表盘上产生正确的时间。图1中描述的就是这样的一个齿轮组,它拥有多个独立的齿轮,这些齿轮相互啮合在一起,协

SpringIOC源码分析(六)__IOC容器的初始化__BeanDefinition载入注册

一、前情提要 上一篇提到了IOC容器初始化的流程,及资源定位,本篇主要分析BeanDefinition的载入过程 二、BeanDefiniton载入解析 BeanDefinition是IOC容器对Bean的数据承载模型,IOC容器对Bean的管理和依赖注入的实现,是通过对BeanDefinition的各种操作来实现的,IOC容器通过一个HashMap来保持和维护这些BeanDefinit

SpringIOC源码分析(五)__IOC容器的初始化__资源加载

一、IOC容器初始化过程 IOC容器初始化是由如上篇所讲到的refresh(),方法来启动的,启动包括BeanDefinition的Resource定位,载入和注册这个主要过程。 过程一:resource定位,是由resourceLoader通过getResource(String location) 的接口来完成的。过程二:将用户定义的Bean表示为IOC容器的内部数据结构BeanDef

Spring-容器:IOC-基于XML管理Bean

目录 一、概述1.1、定义1.2、简介1.3、作用1.4依赖注入1.4.1定义1.4.2作用1.4.3实现方式1.5实现 二、基于XML管理Bean(了解)2.1、获取Bean的方式2.2、依赖注入2.2.1、根据setter注入2.2.2、根据构造器注入 2.3、特殊值处理2.3.1、字面量赋值2.3.2、null值2.3.3、xml实体2.3.4、CDATA节 2.4、为对象类型属性赋