首页 > 其他分享 >SpringBoot如何获取IOC容器以及修改Bean

SpringBoot如何获取IOC容器以及修改Bean

时间:2023-08-01 17:25:37浏览次数:43  
标签:applicationContext SpringBoot ApplicationContext 容器 getBean Bean IOC public

通过ApplicationContextAware来获得ApplicationContext,然后获取相关Bean进行操作
举例说明

@Configuration
public class CommonConfig implements ApplicationContextAware {
    @Override
    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
        // 获取RabbitTemplate
        RabbitTemplate rabbitTemplate = applicationContext.getBean(RabbitTemplate.class);
        // 设置ReturnCallback
        rabbitTemplate.setReturnCallback((message, replyCode, replyText, exchange, routingKey) -> {
            // 投递失败,记录日志
            log.info("消息发送失败,应答码{},原因{},交换机{},路由键{},消息{}",
                     replyCode, replyText, exchange, routingKey, message.toString());
            // 如果有业务需要,可以重发消息
        });
    }
}

例子二

/**
 * 将容器缓存到本地
 */
@Component
public class SpringContextHolder implements ApplicationContextAware {

	// 容器对象
    private static ApplicationContext applicationContext = null;

    private SpringContextHolder() {
    }

	/**
	 * 获取容器中的Bean对象
	 */
    public static <T> T getBean(Class<T> clazz) {
        return applicationContext.getBean(clazz);
    }

    @Override
    public void setApplicationContext(ApplicationContext applicationContext) {
        SpringContextHolder.applicationContext = applicationContext;
    }
}

标签:applicationContext,SpringBoot,ApplicationContext,容器,getBean,Bean,IOC,public
From: https://www.cnblogs.com/jintaocode/p/17598102.html

相关文章

  • 无法访问org.springframework.context.annotation.Bean 错误的类文件:类文件具有错误
    Spring6和SpringBoot3不再支持Java8,最低版本为JDK17,请升级JDK>=17,同时IDEA>=2021.2长期使用的Java8,这次报错一直切换Spring依赖版本,没想到是Java太旧了,而且IDEA小于2021.2版本也不支持Java17来源SpringSecurity教程的源码,本地打开,各种依赖报错Error:(6,46)java......
  • 初探-InitializingBean接口
    InitializingBean是SpringFramework中的一个接口,它用于在Bean实例化后进行初始化操作。当一个Bean实现了InitializingBean接口并被Spring容器创建后,Spring会在该Bean的属性设置完成后自动调用afterPropertiesSet()方法来执行一些额外的初始化逻辑。解释如下:I......
  • springboot 集成 onlyoffice 实现文档预览、编辑、pdf转化、缩略图生成
    开源地址https://gitee.com/lboot/lucy-onlyoffice介绍lucy-onlyoffice是依赖于onlyoffice的springboot文档预览编辑集成解决方案,该解决方案实现了了onlyoffice的访问使用,支持对常见文档类型的预览,编辑和转化。该解决方案提供了功能的拓展实现,用户可以基于拓展接口,实现业务系统......
  • springboot 使用log4j2配置
      pom配置如下:<dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope>......
  • 依赖注入(DI)、控制反转(IOC)、反射的区别和联系?
    实现IOC控制反转的技术叫做反射。而反射通俗的说,反射就是根据给出的类名(字符串)来生成对象。这种编程方式可以让应用在运行时才动态决定生成哪一种对象。反射的应用是很广泛的,像Hibernate、Spring中都是用“反射”做为最基本的技术手段。其实可以把IoC模式看作工厂模式的升华,把IoC......
  • 智慧校园源码:vue2+Java+springboot+MySQL+elmentui+jpa+jwt
    智慧校园综合管理云平台源码系统主要以校园安全、智慧校园综合管理云平台为核心,以智慧班牌为学生智慧之窗,以移动管理平台、家校沟通为辅。教师—家长一学校—学生循环的无纸化管理模式及教学服务,实现多领域的信息互联互通以及校园管理一体化、信息数据化、数据自动化。智慧班牌融合......
  • SpringBoot进行参数校验的方法详解
    https://www.jb51.net/article/246275.htm在日常的接口开发中,为了防止非法参数对业务造成影响,经常需要对接口的参数进行校验。本文通过示例详细讲解了SpringBoot如何进行参数校验的,感兴趣的可以学习一下 +目录介绍在日常的接口开发中,为了防止非法参数对业务造成影响,经常......
  • 【SpringBoot实现两级缓存】
    springboot中使用Caffeine+Redis实现二级缓存1.依赖准备首先确认Caffeine和redis这两者的依赖已导入(springboot版本为2.4.0):<!--redis与caffeine结合使用构成多级缓存--><dependency><groupId>org.springframework.boot</groupId><artifactId>sprin......
  • vscode创建springboot项目
    1、安装ExtensionPackforjava2、安装jdk11环境sudoaptinstallopenjdk-11-jdk-headless3、在项目目录下创建src/main/java/com/example/app.javaimportorg.springframework.boot.SpringApplication;importorg.springframework.boot.autoconfigure.SpringBootApplicat......
  • Spring IOC实现原理详解之IOC体系结构设计 : 关于bean的生成我自己的理解;
    1、系统根据bean的配置信息(xml文件,groovy等),经过资源加载、解析配置后生成了一个关于bean的容器。2、bean容器会根据配置信息生成一个bean实例;3、将bean实例 和 一些其他配置信息生成的一些特殊的bean实例 都放入到bean的容器中;4、其他的类需要调用这些bean的时候,根据申......