【发布时间】:2015-06-14 10:20:51
【问题描述】:
我想阅读 application.properties 使用
@EnableConfigurationProperties and @ConfigurationProperties.
我可以使用以下代码做到这一点:
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
现在我想用WebApplicationInitializer 替换SpringBoot(Application.java),这样我就可以使用外部容器了。这是我的代码:
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;
}
}
执行此操作后,我无法在application.proerties 中获取端口(端口为空,applicationConfiguration 不为空)。任何想法?我错过了什么?
【问题讨论】:
-
要部署到外部容器,只需按照参考指南中的说明扩展
SpringBootServletInitializer。 -
为什么使用 WebApplicationInitializer?您正在构建项目 spring
标签: spring spring-mvc spring-boot spring-java-config