通常在Spring中启用注释,例如@Autowired,方法是在spring XML中包含它。
<context:annotation-config/>
有没有办法在初始化之前在ApplicationContext(或实现)上以编程方式执行此操作?
答案 0 :(得分:1)
只需在@Configuration类中使用AnnotationConfigApplicationContext类就足够了。基于Java的容器配置不依赖于以任何方式进行组件扫描。它只是基于XML的组件配置的不同方法。
浏览以下链接:
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
在您的应用程序上下文类上。
答案 2 :(得分:0)
如果你确实需要这个hack,你可以查看AnnotationConfigBeanDefinitionParser.parse()
来检查它如何操作上下文以及它向它注册了哪种bean定义,然后尝试使用ApplicationContext实现以编程方式重现它以实现同样的效果。
This post可能有助于如何将新的bean定义添加到bean注册表中。