的值。env文件,并尝试将值Group-id放入@KafkaListener中:
Dotenv dotenv = Dotenv.load();
final String KAFKA_GROUP_ID = dotenv.get("SOME_KAFKA_GROUPID");
@KafkaListener(topics = "some_topic", groupId = KAFKA_GROUP_ID, containerFactory = "some_container_name")
IDEA说Kafka_GROUP_ID必须是常量。我已经尝试了Kafka_GROUP_ID的所有修改,但都没有成功。
如何获取Kafka_GROUP_ID常量?
2条答案
按热度按时间4c8rllxm1#
在Sping Boot 中,可以使用@Value注解读取系统环境属性或Spring环境属性
Spring @Value - Spring环境属性
如果在spring环境属性中找不到该键,则属性值将为
${APP_NAME_NOT_FOUND}
。我们可以分配一个默认值,如果spring环境属性中缺少键,该值将被分配。Spring @Value -系统环境
当Spring环境被填充时,它读取所有系统环境变量并将其存储为属性。因此,我们也可以使用@Value注解来分配系统变量。
Spring @Value - SpEL
我们也可以使用带有@Value注解的Spring表达式语言。所以我们也可以使用SpEL读取java的home系统属性。
quhf5bfb2#
您可以编写一个
EnvironmentPostProcessor
,它使用Dotenv
加载属性,然后将其 Package 在PropertySource
中。这样你就可以使用常规的Spring机制来替换值了。这将把
Dotenv
加载的属性注册到Spring用来替换值的Environment
中。**注意:**您也可以编写一个专用的
PropertySource
实现,它封装了Dotenv
并使用它。您可以通过扩展EnumerablePropertySource
并实现它来实现这一点。现在您可以像通常使用Spring一样引用属性。
这可能也会简化你正在使用的引用
Dotenv
的其他代码,因为你可以删除它并使用普通的Spring机制(你甚至可以将属性移动到你的application.properties
或yaml或特定于配置文件的属性)。