SpringBoot2:IOC容器的相关操作以及常用注解说明

2024-09-01 22:12

本文主要是介绍SpringBoot2:IOC容器的相关操作以及常用注解说明,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、查看容器中的Bean实例

查看springboot中的容器实例,首先,我们要获取到IOC容器。

        //1、返回我们的IOC容器ConfigurableApplicationContext run = SpringApplication.run(MainApplication.class, args);//2、查看容器里面的组件String[] names = run.getBeanDefinitionNames();for (String name : names) {System.out.println(name);}

这个获取实例的具体实现类是:org.springframework.beans.factory.support.DefaultListableBeanFactory
其内部,有很多关于容器实例的获取方式
在这里插入图片描述

二、向容器中注册Bean实例

我们知道,在springmvc中,向IOC容器中注册实例的方式有两种
1、xml配置文件里面通过bean标签实现向容器中注册Bean实例。
2、通过扫描注解标注的类,来实现向容器中注册Bean实例。

springboot中,已经不建议使用xml配置文件,那么,该如何向IOC容器中注册组件了?

1、扫描注解方式

启动类加上扫描路径

@SpringBootApplication(scanBasePackages = "com.atguigu.boot")
或者
@ComponentScan("com.atguigu.boot")

那么,在这个包路径下,加上springboot定义的注解类,都会注册到容器中
如:@Bean、@Component、@Controller、@Service、@Repository

这种方式,在springmvc中,对应的配置如下

	<!-- 开启注解 --><context:annotation-config></context:annotation-config><bean class="org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor"/><!-- 扫描文件 --><mvc:annotation-driven/><context:component-scan base-package="com.kfc" ><!--扫描serveice等注解的类--><context:include-filter type="annotation" expression="org.springframework.stereotype.Service" /><context:include-filter type="annotation" expression="org.springframework.stereotype.Repository" /><context:include-filter type="annotation" expression="org.springframework.stereotype.Component" /><!--排除Controller,Controller由springmvc加载--><context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/></context:component-scan>

2、@Configuration配置类方式

这个注解标注的类,就相当于以前的xml配置文件。

  • 1、配置类里面使用@Bean标注在方法上给容器注册组件,默认也是单实例的,实例名默认是方法名
    在这里插入图片描述
  • 2、配置类本身也是组件
    即上图中的MyConfig类,也是IOC容器中的组件
  • 3、proxyBeanMethods:是否代理bean的方法
    • @Configuration(proxyBeanMethods = false),建议默认配置true即可。
    • Full(proxyBeanMethods = true)、【保证每个@Bean方法被调用多少次返回的组件都是单实例的】
    • Lite(proxyBeanMethods = false)【每个@Bean方法被调用多少次返回的组件都是新创建的】
    • 组件依赖必须使用Full模式。其他默认选择Lite模式

3、@Conditional条件装配方式

在这里插入图片描述
这个注解,有很多子注解。
当条件满足什么情况时,就向容器中注册组件。
比如:当容器中没有A实例的时候,就向容器中注册一个A实例。这样,可以节省JVM内存空间。

注意:这个注解配合@Configuration标注的配置类上使用。
如:@ConditionalOnMissingBean(name = "tom")IOC中没有tom实例,就注册一个该实例。

4、@ImportResource和@Import方式

@ImportResource,可以将眼前的xml配置中配置的bean,注册到IOC中。方便对以前的springmvc升级。
@ImportResource("classpath:beans.xml"),其中beans.xmlresources目录下。


@Import,用于将第三方jar包中的类,注册到IOC容器中。
用法:
@Import({User.class, DBHelper.class}),这里的DBHelperch.qos.logback.core.db.DBHelper

三、删除容器中的Bean实例

Spring Boot中,你不能直接从IOC容器中删除一个实例,因为IOC容器管理的是实例的生命周期,包括创建和销毁。一旦容器启动,它会保持对所有管理的bean的引用,以便于调用。

这篇关于SpringBoot2:IOC容器的相关操作以及常用注解说明的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

mysql表操作与查询功能详解

《mysql表操作与查询功能详解》本文系统讲解MySQL表操作与查询,涵盖创建、修改、复制表语法,基本查询结构及WHERE、GROUPBY等子句,本文结合实例代码给大家介绍的非常详细,感兴趣的朋友跟随... 目录01.表的操作1.1表操作概览1.2创建表1.3修改表1.4复制表02.基本查询操作2.1 SE

SpringBoot整合liteflow的详细过程

《SpringBoot整合liteflow的详细过程》:本文主要介绍SpringBoot整合liteflow的详细过程,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋...  liteflow 是什么? 能做什么?总之一句话:能帮你规范写代码逻辑 ,编排并解耦业务逻辑,代码

Spring Security中用户名和密码的验证完整流程

《SpringSecurity中用户名和密码的验证完整流程》本文给大家介绍SpringSecurity中用户名和密码的验证完整流程,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定... 首先创建了一个UsernamePasswordAuthenticationTChina编程oken对象,这是S

python常用的正则表达式及作用

《python常用的正则表达式及作用》正则表达式是处理字符串的强大工具,Python通过re模块提供正则表达式支持,本文给大家介绍python常用的正则表达式及作用详解,感兴趣的朋友跟随小编一起看看吧... 目录python常用正则表达式及作用基本匹配模式常用正则表达式示例常用量词边界匹配分组和捕获常用re

MySQL之InnoDB存储引擎中的索引用法及说明

《MySQL之InnoDB存储引擎中的索引用法及说明》:本文主要介绍MySQL之InnoDB存储引擎中的索引用法及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录1、背景2、准备3、正篇【1】存储用户记录的数据页【2】存储目录项记录的数据页【3】聚簇索引【4】二

mysql中的数据目录用法及说明

《mysql中的数据目录用法及说明》:本文主要介绍mysql中的数据目录用法及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、背景2、版本3、数据目录4、总结1、背景安装mysql之后,在安装目录下会有一个data目录,我们创建的数据库、创建的表、插入的

Spring 框架之Springfox使用详解

《Spring框架之Springfox使用详解》Springfox是Spring框架的API文档工具,集成Swagger规范,自动生成文档并支持多语言/版本,模块化设计便于扩展,但存在版本兼容性、性... 目录核心功能工作原理模块化设计使用示例注意事项优缺点优点缺点总结适用场景建议总结Springfox 是

在Spring Boot中集成RabbitMQ的实战记录

《在SpringBoot中集成RabbitMQ的实战记录》本文介绍SpringBoot集成RabbitMQ的步骤,涵盖配置连接、消息发送与接收,并对比两种定义Exchange与队列的方式:手动声明(... 目录前言准备工作1. 安装 RabbitMQ2. 消息发送者(Producer)配置1. 创建 Spr

c++中的set容器介绍及操作大全

《c++中的set容器介绍及操作大全》:本文主要介绍c++中的set容器介绍及操作大全,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录​​一、核心特性​​️ ​​二、基本操作​​​​1. 初始化与赋值​​​​2. 增删查操作​​​​3. 遍历方

深度解析Spring Boot拦截器Interceptor与过滤器Filter的区别与实战指南

《深度解析SpringBoot拦截器Interceptor与过滤器Filter的区别与实战指南》本文深度解析SpringBoot中拦截器与过滤器的区别,涵盖执行顺序、依赖关系、异常处理等核心差异,并... 目录Spring Boot拦截器(Interceptor)与过滤器(Filter)深度解析:区别、实现