gpt4 book ai didi

java - 在 Java Spring 中从文件中读取属性

转载 作者:行者123 更新时间:2023-12-02 04:40:34 24 4
gpt4 key购买 nike

我是 Java/Spring 新手,尝试从文件中读取属性。这就是我到目前为止所做的。

Controller.java启动应用程序:

import org.springframework.boot.*;
import org.springframework.boot.autoconfigure.*;

@EnableAutoConfiguration
public class Controller {
public static void main(String[] args) throws Exception {
SpringApplication.run(Controller.class, args);
Test test = new Test();
test.doWork();
}

}

这会调用 Test.java 的 doWork() 方法:

import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.context.annotation.PropertySource;

@EnableAutoConfiguration
@PropertySource("application.properties")
public class Test {

@Value("${db.password}")
private String dbPassword;

public void doWork() {
System.out.println(dbPassword);
}

}

我将一些属性放入 application.properties :

db.password=Snap&Fudge!

项目的文件结构如下所示:

./pom.xml
./src/main/java/Controller.java
./src/main/java/Test.java
./src/main/resources/application.properties

当我运行该应用程序时,我看到 Test.doWork()运行,但不是打印出属性,而是返回 null .

你能看出我做错了什么吗?

最佳答案

您正在自己创建一个新的测试实例,而不是使用 spring 托管实例。

首先更改您的 Controller 类。

@SpringBootApplication
public class Controller {
public static void main(String[] args) throws Exception {
ApplicationContext ctx = SpringApplication.run(Controller.class, args);
Test test = ctx.getBean(Test.class);
test.doWork();
}
}

接下来更改您的 Test 类。

@Component 
public class Test {

@Value("${db.password}")
private String dbPassword;

public void doWork() {
System.out.println(dbPassword);
}

}

现在您将拥有一个 Test 类的 Spring 管理(和配置)实例,该实例是从 ApplicationContext 获取的。

关于java - 在 Java Spring 中从文件中读取属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30237209/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com