如何在Spring ApplicationContext中以编程方式启用“annotation-config”

时间:2013-03-01 12:42:00

标签: java spring annotations applicationcontext

通常在Spring中启用注释,例如@Autowired,方法是在spring XML中包含它。

  <context:annotation-config/>

有没有办法在初始化之前在ApplicationContext(或实现)上以编程方式执行此操作?

3 个答案:

答案 0 :(得分:1)

只需在@Configuration类中使用AnnotationConfigApplicationContext类就足够了。基于Java的容器配置不依赖于以任何方式进行组件扫描。它只是基于XML的组件配置的不同方法。

浏览以下链接:

coderanch

Spring annotations - @Configuration to invoke spring bean auto-building

答案 1 :(得分:1)

我在这个方面遇到了很多困难,作为一种解决方法,我创建了一个简单的spring-aspect-config.xml文件,其中包含以下内容

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xmlns:context="http://www.springframework.org/schema/context"
 xsi:schemaLocation="http://www.springframework.org/schema/beans
     http://www.springframework.org/schema/beans/spring-beans.xsd
     http://www.springframework.org/schema/context
     http://www.springframework.org/schema/context/spring-context.xsd">

    <context:spring-configured/>

并将其作为导入添加到我的Application上下文类

@ImportResource("classpath:spring-aspect-config.xml")

以编程方式,您可以通过指定

来执行相同的操作
@EnableSpringConfigured 

在您的应用程序上下文类上。

参考 - https://jira.springsource.org/browse/SPR-7888

答案 2 :(得分:0)

如果你确实需要这个hack,你可以查看AnnotationConfigBeanDefinitionParser.parse()来检查它如何操作上下文以及它向它注册了哪种bean定义,然后尝试使用ApplicationContext实现以编程方式重现它以实现同样的效果。

This post可能有助于如何将新的bean定义添加到bean注册表中。