Spring 启动时加载配置文件问题
Load Config File Issue in Spring Boot
我正在尝试从 Spring 引导应用程序中的 config.properties 文件获取字符串常量的值。但是,当我尝试从 java classes 访问这些值时,它们会变成 null。
请找到以下代码:
Config.properties 文件:
## user Details##
user.username=xyz
user.password=123456
##customer Details ##
customer.username=abc
customer.password=123456
ConfigProp class:
@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;
}
测试Class:
public class Test {
public static void main(String args[]) {
ConfigProp configProp = new ConfigProp();
System.out.println(configProp.getUserName());//coming as null
}
}
Spring启动应用程序主class:
@SpringBootApplication
public class UserApplication {
public static void main(String[] args) {
SpringApplication.run(UserApplication.class, args);
}
}
我不是很清楚这个问题,为什么值没有出现。谁能帮我解决这个问题,如果需要任何其他详细信息,请告诉我。
第一个问题在这里:
ConfigProp configProp = new ConfigProp();
您没有让 spring 保持这种依赖性,因此它没有将其识别为 bean
。
你Test
class可以看起来像这样:
public class Test {
@Autowired
ConfigProp configProp;
public static void main(String args[]) {
System.out.println(configProp.getUserName());//coming as null
}
}
这里的第二个问题是存在两个主要方法。您应该将 Test
class 编写为 Junit 测试,它看起来像这样:
@RunWith(SpringRunner.class)
@SpringBootTest
public class Test {
@Autowired
ConfigProp configProp;
@Test
public void contextLoads() {
assertEquals("abc", configProp.getCustUserName());
}
}
另外 Test
class 应该位于 src/test/java
位置。
我正在尝试从 Spring 引导应用程序中的 config.properties 文件获取字符串常量的值。但是,当我尝试从 java classes 访问这些值时,它们会变成 null。
请找到以下代码:
Config.properties 文件:
## user Details##
user.username=xyz
user.password=123456
##customer Details ##
customer.username=abc
customer.password=123456
ConfigProp class:
@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;
}
测试Class:
public class Test {
public static void main(String args[]) {
ConfigProp configProp = new ConfigProp();
System.out.println(configProp.getUserName());//coming as null
}
}
Spring启动应用程序主class:
@SpringBootApplication
public class UserApplication {
public static void main(String[] args) {
SpringApplication.run(UserApplication.class, args);
}
}
我不是很清楚这个问题,为什么值没有出现。谁能帮我解决这个问题,如果需要任何其他详细信息,请告诉我。
第一个问题在这里:
ConfigProp configProp = new ConfigProp();
您没有让 spring 保持这种依赖性,因此它没有将其识别为 bean
。
你Test
class可以看起来像这样:
public class Test {
@Autowired
ConfigProp configProp;
public static void main(String args[]) {
System.out.println(configProp.getUserName());//coming as null
}
}
这里的第二个问题是存在两个主要方法。您应该将 Test
class 编写为 Junit 测试,它看起来像这样:
@RunWith(SpringRunner.class)
@SpringBootTest
public class Test {
@Autowired
ConfigProp configProp;
@Test
public void contextLoads() {
assertEquals("abc", configProp.getCustUserName());
}
}
另外 Test
class 应该位于 src/test/java
位置。