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

相关文章

Linux join命令的使用及说明

《Linuxjoin命令的使用及说明》`join`命令用于在Linux中按字段将两个文件进行连接,类似于SQL的JOIN,它需要两个文件按用于匹配的字段排序,并且第一个文件的换行符必须是LF,`jo... 目录一. 基本语法二. 数据准备三. 指定文件的连接key四.-a输出指定文件的所有行五.-o指定输出

MyBatis常用XML语法详解

《MyBatis常用XML语法详解》文章介绍了MyBatis常用XML语法,包括结果映射、查询语句、插入语句、更新语句、删除语句、动态SQL标签以及ehcache.xml文件的使用,感兴趣的朋友跟随小... 目录1、定义结果映射2、查询语句3、插入语句4、更新语句5、删除语句6、动态 SQL 标签7、ehc

SpringBoot基于注解实现数据库字段回填的完整方案

《SpringBoot基于注解实现数据库字段回填的完整方案》这篇文章主要为大家详细介绍了SpringBoot如何基于注解实现数据库字段回填的相关方法,文中的示例代码讲解详细,感兴趣的小伙伴可以了解... 目录数据库表pom.XMLRelationFieldRelationFieldMapping基础的一些代

详解SpringBoot+Ehcache使用示例

《详解SpringBoot+Ehcache使用示例》本文介绍了SpringBoot中配置Ehcache、自定义get/set方式,并实际使用缓存的过程,文中通过示例代码介绍的非常详细,对大家的学习或者... 目录摘要概念内存与磁盘持久化存储:配置灵活性:编码示例引入依赖:配置ehcache.XML文件:配置

Redis中Hash从使用过程到原理说明

《Redis中Hash从使用过程到原理说明》RedisHash结构用于存储字段-值对,适合对象数据,支持HSET、HGET等命令,采用ziplist或hashtable编码,通过渐进式rehash优化... 目录一、开篇:Hash就像超市的货架二、Hash的基本使用1. 常用命令示例2. Java操作示例三

Redis中Set结构使用过程与原理说明

《Redis中Set结构使用过程与原理说明》本文解析了RedisSet数据结构,涵盖其基本操作(如添加、查找)、集合运算(交并差)、底层实现(intset与hashtable自动切换机制)、典型应用场... 目录开篇:从购物车到Redis Set一、Redis Set的基本操作1.1 编程常用命令1.2 集

Spring Gateway动态路由实现方案

《SpringGateway动态路由实现方案》本文主要介绍了SpringGateway动态路由实现方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随... 目录前沿何为路由RouteDefinitionRouteLocator工作流程动态路由实现尾巴前沿S

idea+spring boot创建项目的搭建全过程

《idea+springboot创建项目的搭建全过程》SpringBoot是Spring社区发布的一个开源项目,旨在帮助开发者快速并且更简单的构建项目,:本文主要介绍idea+springb... 目录一.idea四种搭建方式1.Javaidea命名规范2JavaWebTomcat的安装一.明确tomcat

SpringBoot中ResponseEntity的使用方法举例详解

《SpringBoot中ResponseEntity的使用方法举例详解》ResponseEntity是Spring的一个用于表示HTTP响应的全功能对象,它可以包含响应的状态码、头信息及响应体内容,下... 目录一、ResponseEntity概述基本特点:二、ResponseEntity的基本用法1. 创

springboot依靠security实现digest认证的实践

《springboot依靠security实现digest认证的实践》HTTP摘要认证通过加密参数(如nonce、response)验证身份,避免明文传输,但存在密码存储风险,相比基本认证更安全,却因... 目录概述参数Demopom.XML依赖Digest1Application.JavaMyPasswo