java - Spring boot - 有没有办法为给定的配置文件禁用 AOP?

标签 java spring-boot spring-aop

在运行构建和/或运行测试时,我一直遇到 AOP 问题。我尝试使用 @Profile("local", "war") 注释 @Aspect 类,以确保该方面只能由“local”和“war”访问“配置文件,但是当我们需要将该方面支持添加到另一个配置文件时,可能会出现一种情况。我们不希望将其硬编码在那里。

是否有一种干净的方法来禁止例如“测试”配置文件访问给定的方面类?

最佳答案

假设,方面被视为 Spring 的 bean :

如果它只是关于“仅在不在配置文件测试中时创建方面”,那么您只需选择:

@Profile("!test")

如果您想要更复杂的条件,请继续阅读:

Spring 配置文件是在 Spring 3.x 中引入的,但在 4.x 中使用更灵活的条件进行了重写。

看一下@Profile源代码:

@Target({ElementType.TYPE, ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Conditional(ProfileCondition.class)
public @interface Profile {

    /**
     * The set of profiles for which the annotated component should be registered.
     */
    String[] value();

}

请注意 @ConditionalProfileCondition 作为“评估”逻辑的实现。

这个类的实现非常简单。

您可以创建自定义注释,就像配置文件一样,它将调用类似的评估逻辑。

关于java - Spring boot - 有没有办法为给定的配置文件禁用 AOP?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58855106/

相关文章:

java - 几张照片后相机 Intent 使我的应用程序崩溃

java - 按上下文名称运行 Liquibase 变更集

java - 如何在位于 application.properties 外部的属性中将 Spring Boot @ConfigurationProperties 与 Jasypt 结合使用

java - 在方法内部使用日志来跟踪方法的执行是不好的做法?

java - Spring AOP 切入点不适用于可变参数

java - 表达式执行 Spring 方面

java - startActivityForResult(e.getIntent(), REQUEST_AUTHORIZATION) 上出现 NullPointException;

java - 将 String 的首字母分开以进行大写

spring-boot - Spring Boot : Custom Validation in Request Params

java - spring boot 1.5.8.RELEASE导入Java 8编译类