SpringBoot 注解值使用指定Bean方法配置

     本人在使用 spring-data-elasticsearch 需要根据环境变量来动态设置索引的,不从配置中心获取,所以这个配置是需要代码逻辑来定义的。同样业务需要通过代码逻辑获取配置,然后指定给注解使用时,可以采用这种方式实现,下面以 ElasticSearch 示例代码:

1、定义获取配置的逻辑代码类。

public class IndexNameProvider {
	private final String prefix;
	private int idx = -1;
	private String indexName;

	public IndexNameProvider() {
		this("index-default");
	}

	public IndexNameProvider(String prefix) {
		this.prefix = prefix;
		increment();
	}

	public void increment() {
		indexName = prefix + '-' + ++idx;
	}

	public String indexName() {
		return indexName;
	}

	/**
	 * @since 4.4
	 */
	public String getPrefix() {
		return prefix;
	}
}

2、将获取配置的类定义好 Bean 交给 SpringBoot 管理

@Bean
pubilc IndexNameProvider indexNameProvider() {
    return new IndexNameProvider();
}

3、在注解中使用配置类的方法

   	@Document(indexName = "#{@indexNameProvider.indexName()}")
	@Setting(shards = 1, replicas = 0, refreshInterval = "-1")
	static class SampleEntity {
		@Nullable
		@Id private String id;
		@Nullable
		@Field(type = Text, store = true, fielddata = true) private String type;
		@Nullable
		@Field(type = Text, store = true, fielddata = true) private String message;
		@Nullable private int rate;
		@Nullable
		@ScriptedField private Double scriptedRate;
		@Nullable private boolean available;
		@Nullable private GeoPoint location;
		@Nullable
		@Version private Long version;

        // ... 省略代码
    }

从这个类指定 @Document 的 index 调用 indexNameProvider.indexName() 方法获取。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值