如何使用Spring Boot外部化配置?

时间:2019-08-08 21:34:30

标签: java spring spring-boot properties

它只是不起作用。我在以下位置看到了文档

https://docs.spring.io/spring-boot/docs/1.5.19.RELEASE/reference/htmlsingle/#boot-features-external-config

我看到了答案

Spring boot externalize config properties/messages on Java annotations

我有

*

MailTrainAPI mt = new MailTrainAPI(); mt.sendMail(map); ... @Component public class MailTrainAPI { @Value("${mailtrain.url}") private String API; public void sendMail(MultiValueMap<String, String> map) { System.out.println("API = "+API); API = System.getProperty("mailtrain.api"); System.out.println("API = "+API); API = System.getenv("mailtrain.api"); System.out.println("API = "+API);
src/main/resources/application.properties

它打印

mailtrain.url=http://mail.galaxy.store/api/send/galaxybadge

这不起作用,因为我自己实例化了该类,而Spring对此一无所知。如何手动访问API = null API = null API = null 文件中的属性?

Spring Boot 1.5.21

2 个答案:

答案 0 :(得分:0)

我能够用

修复它
application.properties

但是我认为会有一种更轻松,更好的方法,而且绒毛更少。

答案 1 :(得分:0)

private async void StartTest_Click(object sender, RoutedEventArgs e) { foreach (var button in selectedButtons) { button.Background = resourceDictionary["ProcessingButtonColour"] as Brush; await Task.Delay(3000); button.Background = resourceDictionary["HoverOverColourInactive"] as Brush; } } 应该是Spring bean,也就是 component ,由于MailTrainAPI而被自动扫描,然后注入@Component。 / p>

但是,当您调用@Value("${mailtrain.url}")时,您自己创建了一个单独的类实例。不要那样做。

您使用该对象的代码必须通过注入字段来接收它,例如

new MailTrainAPI()