How to config @EnableConfigurationProperties, @ConfigurationProperties with WebApplicationInitializer?
23,017
Problem solved. I am missing property file location!!
@ConfigurationProperties(prefix = "server", locations = "classpath:application.properties")
Seems spring boot does that for you automatically.
Author by
ItsJack
Updated on August 07, 2020Comments
-
ItsJack almost 4 years
I want to read application.properties using
@EnableConfigurationProperties and @ConfigurationProperties.
I am able to do that with the following codes:
Application.java @SpringBootApplication @EnableConfigurationProperties(ApplicationConfiguration.class) public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } } ApplicationConfiguration.java @ConfigurationProperties(prefix = "server") public class ApplicationConfiguration { private String port; public String getPort() { return port; } public void setPort(String port) { this.port = port; } } TestController.java @Controller public class TestController { @Autowired ApplicationConfiguration applicationConfiguration; @RequestMapping("/test") @ResponseBody public String test() { if (applicationConfiguration != null) { return applicationConfiguration.getPort(); } return "1"; } } application.properties server.port = 8085
Now I want to replace
SpringBoot(Application.java)
withWebApplicationInitializer
so that I can use an external container. Here is my code:CommonInitializer.java public class CommonInitializer implements WebApplicationInitializer{ @Override public void onStartup(ServletContext servletContext) throws ServletException { AnnotationConfigWebApplicationContext annotationConfigWebApplicationContext = new AnnotationConfigWebApplicationContext(); annotationConfigWebApplicationContext.register(WebConfiguration.class); annotationConfigWebApplicationContext.setServletContext(servletContext); ServletRegistration.Dynamic servlet = servletContext.addServlet("dispatcher", new DispatcherServlet(annotationConfigWebApplicationContext)); servlet.setLoadOnStartup(1); servlet.addMapping("/"); } } WebConfiguration.java @Configuration @EnableWebMvc @ComponentScan(basePackages = "hello") @EnableAutoConfiguration @EnableConfigurationProperties(ApplicationConfiguration.class) public class WebConfiguration { @Bean public ViewResolver viewResolver() { InternalResourceViewResolver viewResolver = new InternalResourceViewResolver(); viewResolver.setViewClass(JstlView.class); viewResolver.setPrefix("/WEB-INF/views/"); viewResolver.setSuffix(".jsp"); return viewResolver; } }
After doing this, I am not able to get the port(port is null, applicationConfiguration is not null) in
application.proerties
. Any idea? What am I missing? -
Vikas about 7 yearslocations is deprecated github.com/spring-projects/spring-boot/issues/6220
-
Impulse The Fox about 6 yearslocations is removed in Spring 2.0.0
-
andy about 5 yearsThis answer is much better and worked for me.