有没有一种方法可以使用注释配置“工厂方法”属性?

时间:2019-06-11 12:30:24

标签: java spring-boot aspectj

我目前正在Java项目中设置AspectJ。为了使我的@Value类中的@AutowiredAuditingAspect.aj属性得到正确的实例,我有一个ApplicationContext.xml文件,在其中我将.aj类声明为具有factory-method =“ aspectOf”属性的Bean。

我想知道是否可以使用注释设置此工厂方法属性,因为在项目中,所有bean均使用注释声明。我仅为该aspectJ bean创建了ApplicationContext.xml,但它使我感到困扰,但我找不到使用注释的方法。

我尝试使用Java配置类来执行此操作,但是出现以下错误:

  

[错误]无法执行目标   org.apache.maven.plugins:maven-compiler-plugin:3.8.0:compile   (默认编译)在项目virtualprinter队列上:编译   失败:编译失败:

     

[错误]   / C:/用户/ avangrunderbe /文档/Oniryx/virtualprinter-c/virtualprinter-queue/src/main/java/be/fgov/minfin/virtualprinter/VirtualPrinterQueueConfig.java:[3,45]   找不到符号

     

[错误]符号:类AuditingAspect

     

[错误]位置:包be.fgov.minfin.virtualprinter.aspects   VirtualPrinterQueueConfig.class

AuditingAspect.aj

public aspect AuditingAspect {
    @Value("${auditlog.request.logged_by}")
    private  String AUDIT_LOG_REQUEST_LOGGED_BY;

    @Value("${auditlog.request.ressource}")
    private  String AUDIT_LOG_REQUEST_RESOURCE;

    @Value("${auditlog.endpoint}")
    private  String AUDIT_LOG_ENDPOINT;

    @Value("${auditlog.user}")
    private  String AUDIT_LOG_USER;

    @Value("${auditlog.password}")
    private  String AUDIT_LOG_PASSWORD;

    @Autowired
    private AuditLogger auditLogger;
    (...)
}

ApplicationContext.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans.xsd
    http://www.springframework.org/schema/context
    http://www.springframework.org/schema/context/spring-context.xsd">

    <bean id="auditingAspect"
          class="be.fgov.minfin.virtualprinter.aspects.AuditingAspect"
          factory-method="aspectOf"/>
</beans>

VirtualPrinterQueueConfig.java

@Configuration
public class VirtualPrinterQueueConfig {
    @Bean
    public AuditingAspect getAuditingAspect(){
        return new AuditingAspect();
    }
}

PS:对不起,我的英语不是我的母语。

0 个答案:

没有答案