1

通常在 spring 中启用注解(如 @Autowired)是通过将其包含在 spring XML 中来完成的。

  <context:annotation-config/>

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

4

3 回答 3

1

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

浏览这些链接:

代码牧场

Spring annotations - @Configuration 调用 spring bean 自动构建

于 2013-03-01T12:51:56.210 回答
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/>

并将其作为导入添加到我的应用程序上下文类

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

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

@EnableSpringConfigured 

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

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

于 2013-11-11T12:38:47.147 回答
0

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

这篇文章可能有助于如何将新的 bean 定义添加到 bean 注册表中。

于 2013-03-01T12:59:26.133 回答