在Spring Boot中加载配置文件问题

时间:2018-04-30 09:21:58

标签: java spring-boot properties-file

我正在尝试从Spring启动应用程序中的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);
    }
}

我没有准确地解决问题,为什么价值观不会到来。任何人都可以帮助我,如果需要任何其他细节,请告诉我。

1 个答案:

答案 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位置。