You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring @AliasFor作用于@Profile组合注解不生效问题求助

核心问题原因

你自定义组合注解不生效的核心原因是@AliasFor注解的作用位置配置错误:你给@AliasFor加了@get:前缀,该配置会让注解仅作用于Kotlin编译生成的属性Getter方法,而Spring的注解别名处理器只会读取注解类自身属性上的@AliasFor配置,因此你配置的profiles到@Profile#value的别名规则完全没有生效,Spring始终读取元注解上写死的default占位值,和你激活的dev环境不匹配,因此Bean不会被注册。

解决方案

修改ProfileAware注解的定义,去掉@AliasFor前的@get:前缀,同时保留运行时保留策略即可:

@Retention(AnnotationRetention.RUNTIME) // 必须保留,Spring运行时需要读取注解
@Target(AnnotationTarget.CLASS, AnnotationTarget.FUNCTION) // 按你的使用场景配置作用范围
@Profile("default")
annotation class ProfileAware(
    @AliasFor(annotation = Profile::class, attribute = "value")
    val profiles: Array<String>,
    // 其余代理其他注解的属性按同样规则配置即可
)

验证

修改后你原来的使用方式无需调整,启动应用后TheBean会按照预期在dev环境下完成注册。

内容的提问来源于stack exchange,提问作者Muyangmin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 13:54:03