spring environment 获取配置信息
使用Environment可以直接获取springboot里的配置信息.
使用例子
@Service
public class KafkaService {
private final Logger logger = LoggerFactory.getLogger(Application.class);
Environment env;
@Autowired
public KafkaService(Environment env) {
this.env = env;
}
/**
* 通过kafka admin查看kafka topic 列表
*/
public Set<String> listTopics() throws Exception {
Properties properties = new Properties();
properties.put(AdminClientConfig.BOOTSTRAP_SERVERS_CONFIG,
env.getProperty("spring.kafka.consumer.bootstrap-servers"));
System.out.println("connect properties: " + properties);
AdminClient adminClient = AdminClient.create(properties);
ListTopicsOptions listTopicsOptions = new ListTopicsOptions();
listTopicsOptions.listInternal(true);
Set<String> names = adminClient.listTopics(listTopicsOptions).names().get();
System.out.println("topics:" + names);
return names;
}
}
Using Environment Variables in Spring Boot’s Properties Files
还是baeldung的博客整理的比较清晰便捷.
https://www.baeldung.com/spring-boot-properties-env-variables
@value直接获取变量配置
@Value("${baeldung.presentation}")
private String baeldungPresentation;
Environment 获取变量
@Autowired
private Environment environment;
environment.getProperty("baeldung.presentation")
批量管理变量
@Component
@ConfigurationProperties(prefix = "baeldung")
public class BaeldungProperties {
private String presentation;
public String getPresentation() {
return presentation;
}
public void setPresentation(String presentation) {
this.presentation = presentation;
}
}
@Autowired
private BaeldungProperties baeldungProperties;
baeldungProperties.getPresentation()
在application.yml里使用环境变量
spring:
datasource:
url: ${DATABASE_URL}