如何将属性值注入Spring Boot bean

时间:2017-03-31 15:32:23

标签: spring

在我的春季启动应用程序中,我试图将配置文件application.properties中的变量值注入到我的java类中,并且我得到一个空值。

这是我的application.properties文件的配置:

  myapp.username=user@user.com
  myapp.password=user

这是我调用配置条目的地方:

@Component
public class MyClass{

        @Value("${myapp.username}")
        public String username;


        @Value("${myapp.password}")
        public String password;

        public static void main(String[] args)  {

             System.out.println(password);
        }

  }

我希望有人如何处理同样的问题,谢谢。

2 个答案:

答案 0 :(得分:0)

您甚至没有让Spring Boot容器启动(初始化),因为您正在直接在main下编写代码。

你应该有一个如下所示的Application类来正确启动Spring引导容器,看看here

@SpringBootApplication
public class Application {

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

据我所知,您希望在容器启动后执行代码,请按照以下步骤操作:

添加上述Application课程,然后在NetClient组件课程中添加 @Postconstruct方法&一旦bean准备就绪,将自动调用此方法,请参阅以下代码:

@Component
public class NetClient {

    @Value("${bigwater.api_config.url.login}")
    public String url_login;


    @Value("${bigwater.api_config.url.ws}")
    public static String url_ws;


    @Value("${bigwater.api_config.username}")
    public String username;


    @Value("${bigwater.api_config.password}")
    public String password;

     @Postconstruct
     public void init() {
       //place all of your main(String[] args) method code here
     }

     //Add authentification() method here
}

答案 1 :(得分:0)

您可以使用此示例将add bean添加到您的配置中:

@Configuration
@ComponentScan(basePackages = "youpackagebase")
@PropertySource(value = { "classpath:application.properties" })
public class AppConfig {

    /*
     * PropertySourcesPlaceHolderConfigurer Bean only required for @Value("{}") annotations.
     * Remove this bean if you are not using @Value annotations for injecting properties.
     */
    @Bean
    public static PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurer() {
        return new PropertySourcesPlaceholderConfigurer();
    }

}

并在你的bean中:

@Component
public class NetClient {

@Value("${bigwater.api_config.url.login}")
public String url_login;

最好的问候