springboot注解动态赋值_SpringBoot注解内容的动态配置⼤家都知道,注解只能配置常量,在⼀些构架的开发中,有时候我们需要给注解动态配置⼀些值,或者想从配置⽂件中读取配置。直接在注解上配置是⽆法实现的,但是我们可以在拿到注解的值之后,再对这些值进⾏另外的操作。⽐如在注解上⾯配置占位符,在使⽤的时候,再对这些占位符进⾏替换。在RocketMQ的监听配置中,就使⽤了这个技术,如下代码所⽰:
@RocketMQMessageListener(topic = "${fig.business-game-message-topic}", consumerGroup = "gateway-message-consumer-group")
public class GatewayMessageReceiveService implements RocketMQListener {
@Override
public void onMessage(MessageExt message) {
}
}
这⾥⾯RocketMQMessageListener注解配置的Topic就是配置的占位符,它会读取yml配置⽂件中的gam
fig.business-game-message-topic配置的值。那么它是怎么实现的呢?很简单,spring boot已经替换我们实现了,只需要调⼀下⽅法就可以了,如下⾯代码所⽰:
container.pic()));
⽐如,在服务器启动的时候,想在⽇志上⾯打印⼀下注解中topic的真实值,如下所⽰:
@Autowired
private Environment environment;
@PostConstruct
public void init() {
RocketMQMessageListener messageListener = Class().getAnnotation(RocketMQMessageListener.class);
String topic = pic());
logger.info("监听⽹关消息,topic:{},group:{}",sumerGroup());
}
另外,简单了解⼀下在Spring 占们符以#和$开头的不同:
${key名称}
1.⽤户获取外部⽂件中指定key的值
2.可以在xml中配置,也可以出现在@value注解中
3.⼀般⽤于获取数据库配置内容信息
#{表达式}
1.spring中el表达式的格式el表达式获取值
2.可以在xml中配置,也可以出现在@value注解中
3.可以任意表达式,⽀持运算符
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论