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

标签 java spring spring-boot aspectj spring-aop

我有一组在 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/

相关文章:

java - MongoDB Spring 数据 Criteria.all

java - "spring.config.location"系统属性的 Spring 常数

java - 使用 hibernate session 获取对象而不使用事务

java - 在 Spring boot fat jar 中读取文件

java - Spring Boot事务回滚

java - FFMPEG 不是预期的 "cutting"

java - 向客户端返回值时 Web 服务出现异常?

java - 无法在真实的 Android 设备上运行任何 Appium 测试。参数错误 : BadParametersError: Parameters were incorrect

java - 带有嵌入式 Jetty 的 Jersey 解决资源中的依赖注入(inject)

java - SQS 接收器 - Spring Boot