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

Spring Boot:如何从注解值中访问配置属性?

解决方案

首先确保你的AppProperties类被正确注册为Spring Bean:
在Spring Boot启动类或配置类上添加@EnableConfigurationProperties注解,启用配置属性类的Bean注册:

@SpringBootApplication
@EnableConfigurationProperties(AppProperties::class)
class YourApplication

然后在Elasticsearch实体类的@Document注解中,使用带@符号的SPEL表达式引用配置Bean的属性:

@Document(indexName = "#{@appProperties.itemIndexName}")
data class YourItemEntity(
    // 实体字段定义
)

说明

  • @appProperties中的@是SPEL中引用Spring Bean的标识,默认情况下配置属性类的Bean名称为类名首字母小写(即appProperties)
  • 确保配置文件(如application.yml)中存在对应配置项:
app:
  item-index-name: your-target-index-name

为什么之前的写法无效

  • 无@的SPEL表达式#{appProperties.itemIndexName}:Spring无法识别为Bean引用,无法解析属性值
  • 带#的#{#appProperties.itemIndexName}:#用于引用方法参数或上下文变量,而非Spring Bean
  • ${}占位符写法:部分旧版本的Spring Data Elasticsearch不支持直接在@Document的indexName中使用占位符,且Kotlin中需转义$为\$,兼容性不如SPEL方式

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 10:57:34