gpt4 book ai didi

java - Spring Boot中加载配置文件问题

转载 作者:行者123 更新时间:2023-11-30 06:11:40 24 4
gpt4 key购买 nike

我正在尝试从 Spring boot 应用程序中的 config.properties 文件获取字符串常量的值。但是当我尝试从 java 类访问这些值并作为 null 时。

请找到以下代码:

Config.properties 文件:

## user Details##
user.username=xyz
user.password=123456


##customer Details ##
customer.username=abc
customer.password=123456

ConfigProp 类:

@Component
@PropertySource("classpath:config.properties")
public class ConfigProp {
@Value("${user.username}")
private String userName;

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

@Value("${customer.username}")
private String custUserName;

@Value("${customer.password}")
private String custPassowrd;
}

测试类:

public class Test {
public static void main(String args[]) {
ConfigProp configProp = new ConfigProp();
System.out.println(configProp.getUserName());//coming as null
}
}

SpringBoot App主类:

@SpringBootApplication
public class UserApplication {
public static void main(String[] args) {
SpringApplication.run(UserApplication.class, args);
}
}

我没有完全理解这个问题,为什么值没有出现。谁能帮我解决这个问题,如果需要任何其他详细信息,请告诉我。

最佳答案

这里的第一个问题:

ConfigProp configProp = new ConfigProp();

您不允许 spring 维护这种依赖关系,因此它不会将其识别为 bean

您的测试类可以如下所示:

public class Test {
@Autowired
ConfigProp configProp;

public static void main(String args[]) {
System.out.println(configProp.getUserName());//coming as null
}
}

这里的第二个问题是存在两个主要方法。您应该将 Test 类编写为 Junit 测试,如下所示:

@RunWith(SpringRunner.class)
@SpringBootTest
public class Test {

@Autowired
ConfigProp configProp;

@Test
public void contextLoads() {
assertEquals("abc", configProp.getCustUserName());
}

}

此外,Test 类应位于 src/test/java 位置。

关于java - Spring Boot中加载配置文件问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50097520/

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