gpt4 book ai didi

java - Spring Boot,@Autowire 使用@Configurable 和加载时间织入非托管类

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:32:15 24 4
gpt4 key购买 nike

我有一组在 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 中有以下部门

    <dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-agent</artifactId>
<version>2.5.6.SEC03</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aop</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aspects</artifactId>
</dependency>

<dependency>
<groupId>javax.el</groupId>
<artifactId>javax.el-api</artifactId>
<version>3.0.0</version>
</dependency>

到目前为止,我还没有看到任何注入(inject)到 stateProvider 中的东西,也没有能够从日志中提取任何信息。我也尝试过使用

进行 setter 样式注入(inject)
@Autowired
public void setStateProvider(StateProvider stateProvider){
this.stateProvider = stateProvider;
}

谢谢

最佳答案

为了检测 LTW,您需要使用 javaagent 或放置 spring-tomcat-weaver.jar\lib文件夹并设置TomcatInstrumentableClassLoadercontext.xml .

javaagent 示例:

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

类加载器示例:

<Context>
<Loader loaderClass="org.springframework.instrument.classl oading.tomcat.TomcatInstrumentableClassLoader" />
</Context>

关于java - Spring Boot,@Autowire 使用@Configurable 和加载时间织入非托管类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29167500/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com