sách gpt4 ăn đã đi

java - 重写@ConfigurationProperties

In lại Tác giả: Walker 123 更新时间:2023-11-30 07:23:11 28 4
mua khóa gpt4 giày nike

我正在开发一个 Spring Integration/Boot 应用程序。我使用多文档 application.yml (src/main/resources/application.yml) 来设置多个配置类的默认值(用 @ConfigurationProperties 注释)。 Applicaiton.yml 带有默认值,其中一些需要重写,具体取决于环境。

我愿意使用 Java 系统属性 (-D...=...)、Spring“属性”(--...=...),或者最好是位于 Jar 外部的 yaml 文件,在目录中。

Application.yml有4个文件,每个文件对应一个不同的配置类。让我们只关注 ServerConfig:

@Configuration
@EnableConfigurationProperties
@ConfigurationProperties(locations = "classpath:application.yml", prefix = "server")
public class ServerConfig {
private Integer port;
private String address;

public Integer getPort() {
return port;
}

public void setPort(Integer port) {
this.port = port;
}

public String getAddress() {
return address;
}

public void setAddress(String address) {
this.address = address;
}
}

应用程序.yml:

server:
address: ::1
port: 8080

---

请注意我如何在注释中指定位置。这会加载 application.yml 并成功使用这些值,但我不知道如何覆盖它们(例如 -Dserver.port=7777 或 --server.port=7777)。如果我删除 locations = ...,那么我可以使用 `-Dserver.port=7777,但 application.yml 中的默认值永远不会加载,因此我必须将每个值指定为命令行论证。

我已通读 https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config.html很多次,我不明白为什么我不能在配置注释中保留 locations = 'application.yml' 并有选择地用系统属性覆盖。

有人知道怎么做吗?

câu trả lời hay nhất

叹息。这是应用程序启动的问题——是由于我对 Spring Integration 和 Spring Boot 之间的混淆造成的。

我的主要方法曾经是:

 @SpringBootApplication
lớp công khai Main {
public static void main(String... args) {
AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext("org.fandingo.blah.blah");
ctx.registerShutdownHook();
}

我的理解是,这就是启动仅 Spring Integration 的应用程序的方式(当然假设是 JavaConfig)。问题在于 YAML 属性加载是 Spring Boot 的一项功能。将 main 方法切换为使用 Spring Boot 方法解决了该问题:

 @SpringBootApplication
lớp công khai Main {
public static void main(String... args) {
SpringApplication app = new SpringApplication(Main.class);
app.setRegisterShutdownHook(true);
app.run(args);
}
}

Spring 是如此的复杂和神秘。为什么 Spring Integration 和 Boot 不能自然地配合我无法理解。

关于java - 重写@ConfigurationProperties,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37218368/

28 4 0
Walker 123
Hồ sơ

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá taxi Didi miễn phí
Phiếu giảm giá taxi Didi
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress