gpt4 book ai didi

java - 属性文件中的属性返回 null

转载 作者:行者123 更新时间:2023-12-02 11:16:54 24 4
gpt4 key购买 nike

我有一个 DBconfig 属性文件,其属性如下;

DB_url = jdbc:mysql://localhost:8080/studentdb
DB_username = root
DB_password = abc123

我想打印数据库服务类(DBconnect.class)内的值,

@PropertySource("classpath:DBconfig.properties")
public class DBconnection {

private Connection con= null;

@Value("${DB_url}")
private String url;

@Value("${DB_username}")
private String username;

@Value("${DB_password}")
private String password;

public DBconnection() {

System.out.println(url); // Output = null
System.out.println(username); // Output = null
System.out.println(password); // Output = null

}

}

完全相同的代码可以工作,并且当我尝试从 Controller 打印值时会打印这些值;

@Controller
@PropertySource("classpath:DBconfig.properties")
public class HomeController {

@Value("${DB_url}")
private String url;

@Value("${DB_username}")
private String username;

@Value("${DB_password}")
private String password;

@RequestMapping(value="/", method=RequestMethod.GET)
public String Message() {


System.out.println(url); //jdbc:mysql://localhost:8080/studentdb
System.out.println(username); //root
System.out.println(password); //abc123

DBconnection conn = new DBconnection();
return "home";
}

}

为什么它在 Controller 中工作,而不是在我的服务包中工作?我如何让它在我的服务包中工作?

我在 src/main/java 中只有 2 个包;

Controller 包(包含HomeController.class)服务包(包括DBconnect.class)

src/main/resources 包含 DBconfig.properties 文件

最佳答案

当您使用@Value时,Spring容器通过BeanPostProcessor注入(inject)值

因此在你的构造函数中,你的值都是 null。

在 Controller 中,您可以访问注入(inject)的值,因为 bean 现已完全实例化

如果您想在服务中访问注入(inject)的值,请将@Configuration添加到您的类中,并将@PostConstruct注释添加到您的方法中:

@Configuration
@PropertySource("classpath:DBconfig.properties")
public class DBconnection {

@PostConstruct
public void init() {
System.out.println(url); //jdbc:mysql://localhost:8080/studentdb
System.out.println(username); //root
System.out.println(password); //abc123
}
}

关于java - 属性文件中的属性返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50203280/

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