在我的春季启动应用程序中,我试图将配置文件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);
}
}
我希望有人如何处理同样的问题,谢谢。
答案 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;
最好的问候