java - 在 Spring 中用 @Value 替换环境
问题描述
我该如何Environment
替换@Value
?
我有一个配置,想替换Environment
和getProperty
:
@Configuration
public class RabbitConfig {
@Autowired
Environment environment;
@Bean("googleRabbitService")
public RabbitService getGoogleRabbitService(RabbitTemplate rabbitTemplate) {
return new RabbitService(
environment.getProperty("rabbit-service.google.request-exchange-name"),
environment.getProperty("rabbit-service.google.request-queue-name"),
environment.getProperty("rabbit-service.google.response-exchange-name"),
environment.getProperty("rabbit-service.google.dead-exchange-name"),
rabbitTemplate
);
}
@Bean("amazonRabbitService")
public RabbitService getAmazonRabbitService(RabbitTemplate rabbitTemplate) {
return new RabbitService(
environment.getProperty("rabbit-service.amazon.request-exchange-name"),
environment.getProperty("rabbit-service.amazon.request-queue-name"),
environment.getProperty("rabbit-service.amazon.response-exchange-name"),
environment.getProperty("rabbit-service.amazon.dead-exchange-name"),
rabbitTemplate
);
}
直接在@Value("${rabbit-service.google.request-exchange-name}")
构造函数中我得到错误:Annotations are not allowed here
.
我可以使用字段:
@Value("${rabbit-service.gogle.request-exchange-name}")
private String googleRequestExchange;
@Value("${rabbit-service.gogle.request-exchange-name}")
private String googleResponseExchange;
...
接着:
public RabbitService getGoogleRabbitService(RabbitTemplate rabbitTemplate) {
return new RabbitService(
googleRequestExchange,
googleResponseExchange,
...
rabbitTemplate
);
但我将不得不创建一堆字段。有什么方法可以使用@Value
吗?
解决方案
您可以执行以下操作:
@Configuration
public class RabbitConfig {
@Bean("googleRabbitService")
public RabbitService getGoogleRabbitService(
@Value("rabbit-service.google.request-exchange-name") String requestExchangeName,
@Value("rabbit-service.google.request-queue-name") String requestQueueName,
@Value("rabbit-service.google.response-exchange-name") String responseExchangeName,
@Value("rabbit-service.google.dead-exchange-name") String deadExchangeName,
RabbitTemplate rabbitTemplate) {
return new RabbitService(
requestExchangeName,
requestQueueName,
responseExchangeName,
deadExchangeName,
rabbitTemplate
);
}
推荐阅读
- css - 预定义的 CSS 类不起作用 ionic3
- mongodb - 在 Mongo 中投影嵌套文档
- java - 如何在 Intellij 的依赖项中查看源代码(包括注释)
- java - 函数 listitem.getMeasuredHeight() 只给我一行的高度,因为 listitem 是 edittext
- selenium - 在 Katalon Studio 中计算项目、行、用户等
- jquery - 将另一个网站嵌入我的网站的方法
- javascript - 选择从 push.apply([user.email, user.groupName]) 构建的数组的左侧部分
- angular - Object(...) 不是函数 - 在 Module../node_modules/@angular/material/esm5/core.es5.js
- graphql - 解析作为 Apollo 客户端中缓存查询超集的查询
- sql - 使用 R 库 RODBC 获取以数字开头的数据库