Spring Boot,使用@Configurable和加载时间编织将@Autowire转换为非托管类

我有一组非托管类,我在Spring之外实例化。 我一直在尝试使用Spring AOP加载时间编织到@Autowire一个bean进入这些类但到目前为止没有运气。

我一直在使用Tomcat 8和Spring Boot 1.2.0进行测试。

我尝试设置类的@Configuration看起来像这样:

 @Configuration @PropertySource("classpath:application.properties") @EnableSpringConfigured @EnableLoadTimeWeaving public class Config 

Config我将我想要@Auotwire的bean定义到我的非托管类中:

 @Bean public StateProvider stateProvider() { //setup bean return new DynamoStateProviderImpl( ); } 

非托管bean看起来像这样:

 @Configurable(autowire = Autowire.BY_TYPE, dependencyCheck = true, preConstruction = true) public class StateOutput implements UnifiedOutput { @Autowired private StateProvider stateProvider; 

我的pom内有以下deps

   org.springframework spring-agent 2.5.6.SEC03   org.springframework spring-tx   org.springframework spring-aop   org.springframework spring-aspects   javax.el javax.el-api 3.0.0  

到目前为止,我还没有看到注入stateProvider任何内容或者能够从日志中提取任何信息。 我也尝试使用setter样式注入

 @Autowired public void setStateProvider(StateProvider stateProvider){ this.stateProvider = stateProvider; } 

谢谢

为了测试LTW,您需要使用javaagent或将spring-tomcat-weaver.jar放在\lib文件夹中,并在context.xml设置TomcatInstrumentableClassLoader

javaagent示例:

 -javaagent:"${settings.localRepository}/org/springframework/spring-agent/2.5.6.SEC03/spring-agent-2.5.6.SEC03".jar 

ClassLoader示例: