Spring中ApplicationContextAware接口的作用

开发者福利!热门AI工具限时免费用 购周边即赠Coding Plan Lite,Claude Code、Cursor等20+工具畅享,效率翻倍! 阅读详情

加载Spring配置文件时,如果Spring配置文件中所定义的Bean类实现了ApplicationContextAware 接口,那么在加载Spring配置文件时,会自动调用ApplicationContextAware 接口中的

public void setApplicationContext(ApplicationContext context) throws BeansException

方法,获得ApplicationContext对象。

前提必须在Spring配置文件中指定该类

**
 * ApplicationContextRegister
 *
 * @author yangyy
 * @message Created by yangyy on 16/11/3.
 */
public class ApplicationContextRegister implements ApplicationContextAware {

    private static final Logger _logger = LoggerFactory.getLogger(ApplicationContextRegister.class);

    @Override
    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {

        _logger.debug("ApplicationContext registed");

        ApplicationContextUtil.getInstance().setApplicationContext(applicationContext);

    }

}

/**
 * ApplicationContextUtil
 *
 * @author yangyy
 * @message Created by yangyy on 16/11/3.
 */
public class ApplicationContextUtil {

    private static final Logger _logger = LoggerFactory.getLogger(ApplicationContextUtil.class);

    private static ApplicationContextUtil instance = null;

    private ApplicationContext applicationContext = null;

    private ApplicationContextUtil() {
    }

    /**
     * Gets instance.
     *
     * @return the instance
     */
    public static ApplicationContextUtil getInstance() {

        if (instance== null) {
            synchronized (ApplicationContextUtil.class) {
                if (instance== null) {
                    instance= new ApplicationContextUtil();
                }
            }
        }

        return instance;
    }

    /**
     * Sets application context.
     *
     * @param applicationContext the application context
     */
    public void setApplicationContext(ApplicationContext applicationContext) {

        synchronized (instance) {
            _logger.debug("setApplicationContext, notifyAll");
            instance.applicationContext = applicationContext;
            instance.notifyAll();
        }
    }

    /**
     * Gets application context.
     *
     * @return the application context
     */
    public ApplicationContext getApplicationContext() {

        synchronized (instance) {

            while (applicationContext == null) {
                try {
                    _logger.debug("getApplicationContext, wait...");

                    instance.wait(20000);

                    if (applicationContext == null) {
                        _logger.error("Have been waiting for ApplicationContext to be set for 20s", new Exception());
                    }

                } catch (InterruptedException ex) {
                    _logger.error("getApplicationContext, wait interrupted", ex);
                }
            }

            return applicationContext;
        }
    }

    /**
     * Gets bean.
     *
     * @param name the name
     * @return the bean
     */
    public <T> T getBean(String name) {
        return (T) getApplicationContext().getBean(name);
    }

    /**
     * Get bean.
     *
     * @param <T> the type parameter
     * @param clazz the clazz
     * @return the t
     */
    public <T> T getBean(Class<T> clazz) {
        return (T) getApplicationContext().getBean(clazz);
    }

配置文件:<bean class="com.yangbw.framework.core.support.ApplicationContextRegister" />

LTX-2.3 V1.6:8G显存本地AI视频生成工具与int8量化加速实践 这次我们来看一个本地部署的AI视频生成工具——LTX-2.3文字图片生成带音频视频工具V1.6版本。这个工具最大的特点是支持int8量化加速,相比原版提速2-4倍,效果更好,而且8G显存就能运行,不需要搭建复杂环境,解压即可使用。 对于想要在本地电脑上快速生成带音频视频内容的用户来说,这个工具解决了几个关键痛点:首先是硬件门槛低,8G显存意味着大多数主流游戏显卡都能胜任;其次是部署简单,避免了Python环境配置、依赖包冲突等常见问题;最后是性能优化明显,int8加速让生成速度大幅提升。 本文会重点演示如何 阅读详情

相关推荐

经典损失函数——均方误差(MSE)和交叉熵误差(CEE)的python实现

损失函数(loss function)用来表示当前的神经网络对训练数据不拟合的程度。这个损失函数有很多,但是一般使用均方误差和交叉熵误差等。 1.均方误差(mean squared error) 先来看一下表达式: 用于将的求导结果变成,是神经网络的输出,是训练数据的标签值,k表示数据的维度。 用python实现: def MS...

Answer3664的博客 1万+

从1写到500为何总失败?概率、注意力与规则设计揭秘

概率论中的独立事件连乘效应揭示了一个反直觉的事实:即使单个环节的准确率极高,串联数百个环节后的累计成功率也会指数级下降。同时,持续注意力作为有限的认知资源,在单调重复任务中会随时间快速衰减,导致失误率飙升。理解这些原理,不仅有助于在工程设计与质量控制中建立更可靠的防错机制,也能让我们看清街头挑战类游戏背后的行为设计逻辑。以“从1写到500赢奖品”为例,摊主利用概率偏差、锚定效应和沉没成本心理,将看似简单的书写任务包装成稳赚的博弈局。本文拆解其数学概率与心理机制,揭示规则细节如何影响人的决策与表现。

weixin_33997389的博客 253

避坑指南:Vue2中使用TinyMCE5常见问题解决方案(含PowerPaste插件异常处理)

本文针对Vue2项目中集成TinyMCE 5富文本编辑器时遇到的高频疑难问题,提供了一套深度实战解决方案。内容涵盖环境搭建、资源路径配置、图片与视频上传处理、以及替代PowerPaste插件的自定义粘贴清理方案,旨在帮助开发者有效规避常见陷阱,构建稳定可靠的内容编辑功能。

weixin_29012677的博客 137

springboot高级】(五:九大常用Aware实现作用以及自定义实现类使用,例子:ApplicationContextAware (使用篇))

ApplicationContextAware、EnvironmentAware、ApplicationEventPublisherAware、BeanNameAware、BeanClassLoaderAware、BeanFactoryAware、EmbeddedValueResolverAware、ResourceLoaderAware、MessageSourceAware。 首先来介绍一下Aware: 指示bean有资格被特定框架对象的Spring容器,通过回调样式的方法。 实际的方法签名由各个子接口

CoderOu 2039

ApplicationContextAware作用

ApplicationContextAware作用: (1):通过它Spring容器会自动把上下文环境对象调用ApplicationContextAware接口中的setApplicationContext方法,可以通过这个上下文环境对象得到Spring容器中的Bean (2):实现代码如下: /** * Spring容器上下文环境Holder * **/ @Component pub...

A169388842的博客 3649

关于ApplicationContextAware接口的使用过程中出现的set方法没执行的问题

关于ApplicationContextAware接口的使用过程中出现的set方法没执行的问题 最近项目中遇到了一个非常有趣的问题,拿出来跟大家分享一下。 近期在跑单元测试的时候,报了一个applicationContext为null的异常 首先看一下代码:这是我的测试类:这个类里面调用了一个工具类DictConfigUtil .getConfig(propertyName)获取redis的对象,...

weixin_40557060的博客 1万+

Spring接口ApplicationContextAware问题

今天遇到莫名其妙的问题: class AppPropsFactory 已经实现ApplicationContextAware,可死活不执行setApplicationContext方法,我的代码调用是: @Before public void setUP() { ApplicationContext applicationContext = new File...

细牛 425

Spring-ApplicationContextAware接口作用

在Web应用中,Spring容器通常采用声明式方式配置产生:开发者只要在web.xml中配置一个Listener,该Listener将会负责初始化Spring容器,MVC框架可以直接调用Spring容器中的Bean,无需访问Spring容器本身。在这种情况下,容器中的Bean处于容器管理下,无需主动访问容器,只需接受容器的依赖注入即可。 但在某些特殊的情况下,Bean需要实现某个功能,但该功能必...

u010277958的博客 373

Spring学习——ApplicationContextAware接口作用

spring体系中的ApplicationContextAware接口。 在Web应用中,Spring容器通常采用声明式方式配置产生:开发者只要在web.xml中配置一个Listener,该Listener将会负责初始化Spring容器,MVC框架可以直接调用Spring容器中的Bean,无需访问Spring容器本身。在这种情况下,容器中的Bean处于容器管理下,无需主动访问容器,只需接受容器的...

shixinbing的博客 232

SpringBoot应用篇】SpringApplicationContextAware接口作用

ApplicationContextAware类 当一个类实现了这个接口ApplicationContextAware)之后,这个类就可以方便获得ApplicationContext中的所有 bean。换句话说,就是这个类可以直接获取 Spring 配置文件中,所有有引用到的 Bean 对象。 在某些特殊的场景下,Bean需要实现某个功能,但该功能必须借助于Spring容器中的其他Bean才能实现,此时就必须让该Bean先获取Spring容器,然后借助于Spring容器实现该功能。为了让Bean获取它所在

输入技术、输出想法 911

SpringApplicationContextAware接口作用

ApplicationContextAware接口:   当一个类实现了这个接口之后,这个类就可以方便地获得 ApplicationContext 中的所有bean。换句话说,就是这个类可以直接获取Spring配置文件中,所有有引用到的bean对象。   Spring容器会检测容器中的所有Bean,如果发现某个Bean实现ApplicationContextAware接口,Spri...

weixin_30311605的博客 77

spring各种接口作用FactoryBeanApplicationContextAware、InitializingBean

FactoryBean 当配置文件中&lt;bean&gt;的class属性配置的实现类是FactoryBean时,通过 BeanFactory#getBean()方法返回的不是FactoryBean本身,而是FactoryBean#getObject()方法所返回的对象,相当于FactoryBean#getObject()代理了getBean()方法 public interface F...

要么牛逼,要么牛逼 605

spring异步执行程序ApplicationContextAware接口作用

在Web应用中,Spring容器通常采用声明式方式配置产生:开发者只要在web.xml中配置一个Listener,该Listener将会负责初始化Spring容器,MVC框架可以直接调用Spring容器中的Bean,无需访问Spring容器本身。在这种情况下,容器中的Bean处于容器管理下,无需主动访问容器,只需接受容器的依赖注入即可。 但在某些特殊的情况下,Bean需要实现某个功能,但该功能必...

止境博客 428

ApplicationContextAware接口作用(获取Spring容器以及获取Spring容器中的Bean

在Web应用中,Spring容器通常采用声明式方式配置产生:开发者只要在web.xml中配置一个Listener,该Listener将会负责初始化Spring容器,MVC框架可以直接调用Spring容器中的Bean,无需访问Spring容器本身。在这种情况下,容器中的Bean处于容器管理下,无需主动访问容器,只需接受容器的依赖注入即可。 但在某些特殊的情况下,Bean需要实现某个功能,但该功能必须...

xiaochouyu__的博客 512

SpringApplicationContextAware作用

SpringApplicationContextAware作用 ApplicationContextAware 通过它Spring容器会自动把上下文环境对象调用ApplicationContextAware接口中的setApplicationContext方法。 我们在ApplicationContextAware实现类中,就可以通过这个上下文环境对象得到Spring容器中的Bean。 看到—Aware就知道是干什么的了,就是属性注入的,但是这个ApplicationContextAware的不同地方

紫宇寰的Java小屋 313

ApplicationContextAware接口的使用

ApplicationContextAware接口一、ApplicationContextAware作用1、ApplicationContext是什么?2、ApplicationContextAware作用二、ApplicationContextAware如何使用三、知识点拓展 一、ApplicationContextAware作用 1、ApplicationContext是什么?         很多人都知道,Applic

qq_41563912的博客 8713

ApplicationContextAware接口实现Spring上下文环境

一、ApplicationContextAware接口有什么用? 当一个类实现了这个接口ApplicationContextAware)之后,这个类就可以方便获得ApplicationContext中的所有bean。换句话说,就是这个类可以直接获取spring配置文件中,所有有引用到的bean对象。 1、BeanFactory是什么? BeanFactory作为基础的IoC容器,管理了sp...

qq_42714869的博客 1万+

Spring中InitializingBean接口ApplicationContextAware接口

当你实现了afterPropertiesSet方法后,spring就会对你提供框架级的支持:当你通过sring容器生产出实现了该接口的类的实例后,它就会调用afterPropertiesSet方法,通过这个方法,你可以检查你的bean是否正确地被初始化了.当然,你也可以用init-method方法.这两种方式可以同时使用,调用的顺序为init-method后调用。在spring初始化bean的时候,如果bean实现了InitializingBean接口,会自动调用afterPropertiesSet方法。

m0_68207804的博客 938

ApplicationContextAware,ServletContextAware等Aware接口的理解

Aware接口理解 Aware的意思是感知 ApplicationContextAware可以获得 ApplicationContext上下文资源 ServletContextAware可以获得ServletContext上下文资源 … 实现xxAware接口的子类,会覆盖对应的setXX()方法,从而可以获得Spring容器中的xx资源 ApplicationContextAware实例 A...

贺爷演示技术流 1827

Spring Boot 中的 Aware 接口以及 ApplicationContextAware 的详细说明、使用示例及注意事项

Spring Boot 中的 Aware 接口以及 ApplicationContextAware 的详细说明、使用示例及注意事项

爱的叹息的专栏 2064

ApplicationContextAware作用

ApplicationContextAware 通过它Spring容器会自动把上下文环境对象调用ApplicationContextAware接口中的setApplicationContext方法。 我们在ApplicationContextAware实现类中,就可以通过这个上下文环境对象得到Spring容器中的Bean。   看到—Aware就知道是干什么的了,就是属性注入的,但是这个Ap...

香烟达人的博客 3573

SpringApplicationContextAware接口使用理解说明

一、APPLICATIONCONTEXTAWARE作用 1、APPLICATIONCONTEXT是什么? 很多人都知道,ApplicationContext是我们常用的IOC容器,而他的顶层接口便是BeanFactory,ApplicationContext对BeanFactory做了拓展,功能更加强大。 2、APPLICATIONCONTEXTAWARE作用Spring/SpringMVC中,我们拿到IOC容器无非有三种方式,那就是使用ApplicationContext接口下的三个实现类:

李云龙的意大利面 1268
上一篇: Linux下的tar压缩解压缩命令详解
下一篇: Dubbo2.8.4资源地址
mingyu1016
博客等级 码龄15年 10粉丝 21原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值