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示例: