SpringBoot中application.properties的@Value始终为空

时间:2018-07-30 13:53:57

标签: java spring-boot properties components

如何正确地从application.properties文件中注入值?

主类:

@SpringBootApplication
public class Main {


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

application.properties文件:

my.password=admin

测试课程:

@Component
public class Test {
    @Value("${my.password}")
    private String mypassword;

    public String getMypassword() {
        return mypassword;
    }

    public void setMypassword(String mypassword) {
        this.mypassword = mypassword;
    }

    public Test(){
        System.out.println("@@@@@@@@@@@@@@@@@@@"+ mypassword);
    }
}

控制台打印的内容始终为空,而不打印application文件中的值

2 个答案:

答案 0 :(得分:2)

在创建类时(即在调用构造函数时)不会注入属性,但会稍后。因此,您会在构造函数中看到null。

尝试添加带有@PostConstruct的方法,并检查结果:

@PostConstruct
public void afterCreation(){
    System.out.println("@@@@@@@@@@@@@@@@@@@"+ mypassword);
}

答案 1 :(得分:0)

@pvpkiran我正在尝试将其添加到我的主要方法中,其余部分保持不变。

@SpringBootApplication
public class Application {
    @Autowired
    static Test  t;
    public static void main(String args[]){
        SpringApplication.run(Application.class,args);

        t.foobar();
    }
}
相关问题