你的组件“ A”不是由Spring容器创建的,因此不会注入依赖项。但是,如果你需要支持一些旧代码(据我的问题理解),则可以使用
@Configurable注释和构建/编译时间编织:
@Configurable(autowire = Autowire.BY_TYPE)public class A extends TimerTask { // (...)}然后,Spring会将自动装配的依赖项注入到组件A中,无论它是由容器本身实例化的,还是由某些旧代码中实例化的
new。
例如,要使用maven插件设置构建时编织,你必须:
- 添加
<context:spring-configured/>
到Spring应用程序上下文 - 配置Maven AspectJ插件:
在构建插件部分:
<build> <plugins> <plugin> <groupId>org.prehaus.mojo</groupId> <artifactId>aspectj-maven-plugin</artifactId> <version>1.4</version> <configuration> <complianceLevel>1.6</complianceLevel> <encoding>UTF-8</encoding> <aspectLibraries> <aspectLibrary> <groupId>org.springframework</groupId> <artifactId>spring-aspects</artifactId> </aspectLibrary> </aspectLibraries> <!--Xlint set to warning alleviate some issues, such as SPR-6819.Please consider it as optional. https://jira.springsource.org/browse/SPR-6819 --> <Xlint>warning</Xlint> </configuration> <executions> <execution> <goals> <goal>compile</goal> <goal>test-compile</goal> </goals> </execution> </executions> </plugin> </plugins></build>
…以及依赖项部分:
<dependency> <groupId>org.springframework</groupId> <artifactId>spring-aspects</artifactId> <version>3.1.1.RELEASE</version></dependency><dependency> <groupId>org.aspectj</groupId> <artifactId>aspectjrt</artifactId> <version>1.6.11</version></dependency>



