Java Spring引导中的加载配置文件问题
我正在尝试从Spring启动应用程序的config.properties文件中获取字符串常量的值。但是当我试图从java类中访问这些值时,结果显示为null 请查找以下代码: Config.properties文件: ConfigProp类: 测试等级: SpringBoot应用程序主类:Java Spring引导中的加载配置文件问题,java,spring-boot,properties-file,Java,Spring Boot,Properties File,我正在尝试从Spring启动应用程序的config.properties文件中获取字符串常量的值。但是当我试图从java类中访问这些值时,结果显示为null 请查找以下代码: Config.properties文件: ConfigProp类: 测试等级: SpringBoot应用程序主类: @SpringBootApplication public class UserApplication { public static void main(String[] args) {
@SpringBootApplication
public class UserApplication {
public static void main(String[] args) {
SpringApplication.run(UserApplication.class, args);
}
}
我没有完全理解这个问题,为什么没有价值观。任何人都可以在这方面帮助我,如果需要任何其他详细信息,请告诉我。这里的第一个问题:
ConfigProp configProp = new ConfigProp();
您不允许spring维护此依赖关系,因此它不会将其识别为bean
您的Test
类可以如下所示:
public class Test {
@Autowired
ConfigProp configProp;
public static void main(String args[]) {
System.out.println(configProp.getUserName());//coming as null
}
}
@RunWith(SpringRunner.class)
@SpringBootTest
public class Test {
@Autowired
ConfigProp configProp;
@Test
public void contextLoads() {
assertEquals("abc", configProp.getCustUserName());
}
}
第二个问题是存在两种主要方法。您应该将您的测试
类编写为Junit测试,它看起来像这样:
public class Test {
@Autowired
ConfigProp configProp;
public static void main(String args[]) {
System.out.println(configProp.getUserName());//coming as null
}
}
@RunWith(SpringRunner.class)
@SpringBootTest
public class Test {
@Autowired
ConfigProp configProp;
@Test
public void contextLoads() {
assertEquals("abc", configProp.getCustUserName());
}
}
另外,
Test
类应该位于src/Test/java
位置。您确定config.properties
位于类路径吗?是的,config.properties位于src/main/resources文件夹中。谢谢@Harshit Shrivastava我能知道你的主类有@SpringBootApplication注释吗?在帖子中添加了SpringBootApplication主类。请检查。谢谢@Shanu Gupta看到了它。嘿,你的测试类是junit测试吗?你能发布你的项目结构的截图吗?我只是好奇你怎么会有两个主要的方法?我只是用main()添加了测试类来测试值是否会出现。然后我将删除测试类。谢谢。。。您不应该编写这样的测试。你在使用SpringWeb吗?
@RunWith(SpringRunner.class)
@SpringBootTest
public class Test {
@Autowired
ConfigProp configProp;
@Test
public void contextLoads() {
assertEquals("abc", configProp.getCustUserName());
}
}