跳到主要内容

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}