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

相关文章

SpringBoot实现数据库读写分离的3种方法小结

《SpringBoot实现数据库读写分离的3种方法小结》为了提高系统的读写性能和可用性,读写分离是一种经典的数据库架构模式,在SpringBoot应用中,有多种方式可以实现数据库读写分离,本文将介绍三... 目录一、数据库读写分离概述二、方案一:基于AbstractRoutingDataSource实现动态

Springboot @Autowired和@Resource的区别解析

《Springboot@Autowired和@Resource的区别解析》@Resource是JDK提供的注解,只是Spring在实现上提供了这个注解的功能支持,本文给大家介绍Springboot@... 目录【一】定义【1】@Autowired【2】@Resource【二】区别【1】包含的属性不同【2】@

springboot循环依赖问题案例代码及解决办法

《springboot循环依赖问题案例代码及解决办法》在SpringBoot中,如果两个或多个Bean之间存在循环依赖(即BeanA依赖BeanB,而BeanB又依赖BeanA),会导致Spring的... 目录1. 什么是循环依赖?2. 循环依赖的场景案例3. 解决循环依赖的常见方法方法 1:使用 @La

Spring Boot + MyBatis Plus 高效开发实战从入门到进阶优化(推荐)

《SpringBoot+MyBatisPlus高效开发实战从入门到进阶优化(推荐)》本文将详细介绍SpringBoot+MyBatisPlus的完整开发流程,并深入剖析分页查询、批量操作、动... 目录Spring Boot + MyBATis Plus 高效开发实战:从入门到进阶优化1. MyBatis

SpringCloud动态配置注解@RefreshScope与@Component的深度解析

《SpringCloud动态配置注解@RefreshScope与@Component的深度解析》在现代微服务架构中,动态配置管理是一个关键需求,本文将为大家介绍SpringCloud中相关的注解@Re... 目录引言1. @RefreshScope 的作用与原理1.1 什么是 @RefreshScope1.

Spring Boot 配置文件之类型、加载顺序与最佳实践记录

《SpringBoot配置文件之类型、加载顺序与最佳实践记录》SpringBoot的配置文件是灵活且强大的工具,通过合理的配置管理,可以让应用开发和部署更加高效,无论是简单的属性配置,还是复杂... 目录Spring Boot 配置文件详解一、Spring Boot 配置文件类型1.1 applicatio

Mysql表的简单操作(基本技能)

《Mysql表的简单操作(基本技能)》在数据库中,表的操作主要包括表的创建、查看、修改、删除等,了解如何操作这些表是数据库管理和开发的基本技能,本文给大家介绍Mysql表的简单操作,感兴趣的朋友一起看... 目录3.1 创建表 3.2 查看表结构3.3 修改表3.4 实践案例:修改表在数据库中,表的操作主要

C# WinForms存储过程操作数据库的实例讲解

《C#WinForms存储过程操作数据库的实例讲解》:本文主要介绍C#WinForms存储过程操作数据库的实例,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、存储过程基础二、C# 调用流程1. 数据库连接配置2. 执行存储过程(增删改)3. 查询数据三、事务处

Java使用Curator进行ZooKeeper操作的详细教程

《Java使用Curator进行ZooKeeper操作的详细教程》ApacheCurator是一个基于ZooKeeper的Java客户端库,它极大地简化了使用ZooKeeper的开发工作,在分布式系统... 目录1、简述2、核心功能2.1 CuratorFramework2.2 Recipes3、示例实践3

Springboot处理跨域的实现方式(附Demo)

《Springboot处理跨域的实现方式(附Demo)》:本文主要介绍Springboot处理跨域的实现方式(附Demo),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不... 目录Springboot处理跨域的方式1. 基本知识2. @CrossOrigin3. 全局跨域设置4.