我正在尝试从Spring启动应用程序中的config.properties文件中获取字符串常量的值。但是当我试图从java类中访问这些值并将其作为null时。
请找到如下代码:
## user Details##
user.username=xyz
user.password=123456
##customer Details ##
customer.username=abc
customer.password=123456
@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);
}
}
我没有准确地解决问题,为什么价值观不会到来。任何人都可以帮助我,如果需要任何其他细节,请告诉我。
答案 0 :(得分:1)
这里的第一个问题:
ConfigProp configProp = new ConfigProp();
你不是让春天保持这种依赖性,因此它不承认这是bean
。
你Test
课程可能如下所示:
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
位置。