`

Spring的接口ApplicationContextAware问题

 
阅读更多
今天遇到莫名其妙的问题:
class AppPropsFactory 已经实现了ApplicationContextAware,可死活不执行setApplicationContext方法,我的代码调用是:

@Before
    public void setUP() {
        ApplicationContext applicationContext = new FileSystemXmlApplicationContext(new String[]{"classpath:conf/spring/applicationContext.xml",
                "classpath:conf/spring/applicationContext-datasource.xml",
                "classpath:conf/spring/applicationContext-config.xml"});
    }

    @Test
    public void getAppPropsTest() {
        AppProps props = AppPropsFactory.getAppProps(AppProps.DATABASE_PROPS);
        System.out.println(props.toString());
    }

-----------------------------------------------
applicationContext-config.xml配置文件如下:
<bean class="com.xxxx.xxxx.config.impl.AppPropsFactory" />
我这个bean纯粹是为了注入ApplicationContext容器而用的,是个工厂,直接使用类去产生bean,所以程序里面没有任何地方会调用spring的这个实例,也就是说,如果使用Spring的延迟机制,spring永远也不会去实例化这个类,那么,也就永远也注入不了ApplicationContext;纠结了很久,找了很久,才发现时这个问题,我郁闷,解决方法就是,去掉延迟机制即可,如下lazy-init 设置为 false
<bean class="com.xxxx.xxxx.config.impl.AppPropsFactory" lazy-init="false" />
分享到:
评论

相关推荐

    spring-aware接口实现与bean作用域(spring多容器层面)

    `ApplicationContextAware`是其中的一个典型接口,当我们想要在非托管类(即非Spring Bean)中获取Spring容器中的其他Bean时,可以使用这个接口。 `ApplicationContextAware`接口提供了`setApplicationContext`方法...

    spring入门 aware接口实现

    通过aware接口,可以对spring相应资源(可能包含相关核心资源)进行操作(一定要慎重) 首先创建一个类,实现ApplicationContextAware接口 , 该借口需要实现 setApplicationContext方法,该方法的参数由容器传递...

    Spring各种回调接口[定义].pdf

    2. **ApplicationContextAware**:此接口允许Bean直接访问ApplicationContext容器。通过实现`setApplicationContext(ApplicationContext applicationContext)`方法,Bean可以获取到容器对象,从而可以访问其他Bean、...

    spring相关面试问题.docx

    3. **Aware 接口处理**:Spring 会检查 Bean 是否实现了特定的 xxxAware 接口,例如 BeanNameAware、BeanFactoryAware 和 ApplicationContextAware,然后注入相应的上下文信息。 4. **BeanPostProcessor**:如果 ...

    springmvc spring 两套上下文问题

    两套上下文之间的通信是通过ApplicationContextAware接口来实现的。如果某个Bean需要访问到Spring的全局ApplicationContext,它可以实现这个接口,Spring会在初始化时自动注入ApplicationContext实例。这样,...

    com-spring-ioc-demo:源码主要是学习Spring IOC的原理,以及对Bean的注册及控制,主要运用以下类对Spring进行扩展学习:BeanPostProcessor,BeanFactoryAware,BeanNameAware,ApplicationContextAware,FactoryBean,BeanDefinitionRegistryPostProcessor,BeanFactoryPostProcessor,BeanPostProcessor,ResourceLoaderA

    com-spring-ioc-demo:源码主要是学习Spring IOC的原理,以及对Bean的注册及控制,主要运用以下类对Spring进行扩展学习:BeanPostProcessor,BeanFactoryAware,BeanNameAware,ApplicationContextAware,FactoryBean...

    Spring Aware标记接口使用案例解析

    ApplicationContextAware 是 Spring 中最常用的 Aware 接口之一,它提供了对ApplicationContext对象的访问能力。通过实现 ApplicationContextAware 接口,Bean 对象可以获取到ApplicationContext 对象,从而访问 ...

    Struts2和Spring整合

    - 创建Action类:Action类需要实现Spring的ApplicationContextAware接口,以便获取Spring的ApplicationContext,并通过它来获取依赖的服务。 - 结合使用:在Action中通过@Autowired注解或者ApplicationContext获取...

    Spring源码学习八:常用的扩展接口详解1

    3. **ApplicationContextAware接口**: 这个接口有一个`setApplicationContext(ApplicationContext)`方法。实现这个接口的类能够在Bean加载过程中获取到Spring应用上下文`ApplicationContext`,从而可以访问容器中...

    Spring特性——Aware感知特性

    在Spring框架中,Aware接口系列是其核心特性之一,它为Spring容器提供了向bean注入上下文信息的能力。这些接口让bean能够感知到Spring容器的存在,从而获取必要的服务或配置信息。下面我们将深入探讨Spring的Aware...

    netty-spring-mvc-master.rar_netty_netty spring_netty4 spring_s

    这通常可以通过实现Spring的ApplicationContextAware接口来实现,这样可以在Netty的启动过程中获取到Spring的ApplicationContext,从而获取到需要的服务实例,例如MySQL的连接池。 在具体实现中,可以创建一个...

    Spring Bean生命周期.pdf

    - Aware接口:包括BeanNameAware、BeanClassLoaderAware、BeanFactoryAware、EnvironmentAware、EmbeddedValueResolverAware和ApplicationContextAware等。这些接口允许Bean获取容器的相关信息,如Bean的名称、类...

    获取spring容器的方法

    本文将深入探讨几种常见的获取Spring容器的方法,包括使用`ApplicationContext`、通过`ServletContext`、利用`ApplicationObjectSupport`、`WebApplicationObjectSupport`以及实现`ApplicationContextAware`接口等。...

    17. Spring Boot普通类调用bean【从零开始学Spring Boot】

    - 实现ApplicationContextAware接口,Spring会在初始化时自动注入ApplicationContext。 - 使用`@Resource`注解,与`@Autowired`类似,但更适用于字段注入,并且支持JSR 250规范。 - 静态ApplicationContext的...

    Spring实现Aware接口自定义获取bean的两种方式

    ApplicationContextAware接口是Spring框架中的一种 Aware接口,通过实现该接口,可以获取ApplicationContext对象,从而获取bean对象。代码如下: @Service public class ApplicationContextHelper implements ...

    Spring中关于Bean的管理的课件

    10. **Aware接口**:Spring提供了一系列的Aware接口,如BeanNameAware、BeanFactoryAware和ApplicationContextAware,这些接口使得Bean可以在运行时获取自身的一些信息,例如Bean的名字、所处的Bean工厂或...

    详细的Spring配置和Spring Boot-外文翻译

    为此,Spring提供了两个接口:BeanNameAware和ApplicationContextAware(在第3章末尾介绍)。这两个接口分别允许你的bean获取其分配的名字并引用它的ApplicationContext。本章将涵盖实现这些接口以及在应用程序中...

    线程中获取spring 注解bean

    4. **ApplicationContextAware**:让线程处理类实现`ApplicationContextAware`接口,Spring会在启动时自动为其注入`ApplicationContext`。然后,可以通过`ApplicationContext`的`getBean()`方法来获取所需的bean。...

    Springbean循环依赖问题,与解决方案。.docx

    2. 使用 ApplicationContextAware 接口:使用 ApplicationContextAware 接口可以在 Bean 创建时获取 ApplicationContext 对象,从而解决循环依赖的问题。 3. 使用依赖注入容器:使用依赖注入容器可以自动解决循环...

    用maven整合struts+spring+hibernate

    - 将Struts 2的Action与Spring的Bean关联,通常通过实现Spring的ApplicationContextAware接口。 - 使用Spring的JdbcTemplate或Hibernate的Session进行数据库操作。 6. 测试与调试: 在整合完成后,可以通过单元...

Global site tag (gtag.js) - Google Analytics