通常在 spring 中启用注解(如 @Autowired)是通过将其包含在 spring XML 中来完成的。
<context:annotation-config/>
有没有办法在初始化之前在 ApplicationContext (或实现)上以编程方式执行此操作?
通常在 spring 中启用注解(如 @Autowired)是通过将其包含在 spring XML 中来完成的。
<context:annotation-config/>
有没有办法在初始化之前在 ApplicationContext (或实现)上以编程方式执行此操作?
只需在 @Configuration 类中使用 AnnotationConfigApplicationContext 类就足够了。基于 java 的容器配置不依赖于以任何方式进行组件扫描。它只是基于 XML 的组件配置的不同方法。
浏览这些链接:
我为此做了很多努力,作为一种解决方法,我创建了一个简单的 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
在您的应用程序上下文类上。
如果你真的需要这个 hack,你可以AnnotationConfigBeanDefinitionParser.parse()
检查它如何操作上下文以及它注册了什么样的 bean 定义,然后尝试使用 ApplicationContext 实现以编程方式重现它以达到相同的效果。
这篇文章可能有助于如何将新的 bean 定义添加到 bean 注册表中。