有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java是否创建具有特定@ConditionalOnProperty的注释?

我的计划是创建一个注释,如果我把它放在一个类上,那么只有当@ConditionalOnProperty为true时,这个类才会是一个bean

我有这个:

@ConditionalOnProperty(prefix = "backend-auth", value = "enabled", havingValue = "true", matchIfMissing = false)

我只想在application.properties文件中存在backend-auth.enabled=true时创建一些bean(控制器/服务)。现在我有了这个:

@RestController
@ConditionalOnProperty(prefix = "backend-auth", value = "enabled", havingValue = "true", matchIfMissing = false)
public class FirstController {}

@RestController
@ConditionalOnProperty(prefix = "backend-auth", value = "enabled", havingValue = "true", matchIfMissing = false)
public class SecondController{}

@Service
@ConditionalOnProperty(prefix = "backend-auth", value = "enabled", havingValue = "true", matchIfMissing = false)
public class FirstService {}

@Service
@ConditionalOnProperty(prefix = "backend-auth", value = "enabled", havingValue = "true", matchIfMissing = false)
public class SecondService{}

正如你所看到的,我正在重用@ConditionalOnProperty部分,如果我想更改prefixvaluehavingValue值,那么我必须在4个位置进行更改,如果不注意,可能会错过它

我正在考虑创建一个包含@ConditionalOnProperty的注释,并在我的FirstControllerSecondControllerFirstServiceSecondService上使用这个自定义注释

我想以这样的方式结束:

@RestController
@BackendAuthEnabled
public class FirstController {}

@RestController
@BackendAuthEnabled
public class SecondController{}

@Service
@BackendAuthEnabled
public class FirstService {}

@Service
@BackendAuthEnabled
public class SecondService{}

共 (1) 个答案

  1. # 1 楼答案

    好了:

    @ConditionalOnProperty(prefix = "backend-auth", value = "enabled", havingValue = "true", matchIfMissing = false)
    @Retention(RetentionPolicy.RUNTIME)
    public @interface BackendAuthEnabled {
    }
    

    (感谢Wim的链接)