对于习惯传统的web方式开发的程序猿们,刚开始不适应SpringBoot的可执行jar模式;
下面需要稍作 修改就可以用SpringBoot搭建传统的web开发项目;
第一步:将主应用类Application继承SpringBootServletInitializer类
@SpringBootApplication
public class Application extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(Application.class);
}
public static void main(String[] args) throws Exception {
SpringApplication.run(Application.class, args);
}
}
第二步:在maven的pom.xml文件中,修改打包类型为:
<packaging>war</packaging>
第三步:对于Tomcat容器的支持,如果已经引入了Tomcat容器,或者使用别的容器,使用下面的配置
<dependencies>
<!-- … -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
<!-- … -->
</dependencies>
注意:对于老的容器(Tomcat6.0)并不支持ServletContextInitializer,需要在项目中添加web.xml文件,然后在DispatchServlet中启动SpringBoot的Application主应用;
Servlet Containers支持的类型
SpringBoot定义了静态资源的存放地方,
/public
(or/static
or/resources
or/META-INF/resources
) 同样properties属性文件也只能放在这些地方,SpringBoot应用启动的时候会自动检测并加载这些文件;
同样如果项目不以war或者是可执行jar的方式启动,需要在application朱启动类中将main方法的方式关闭;具体方式如下:
@SpringBootApplication
public class Application extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
return configureApplication(builder);
}
public static void main(String[] args) {
configureApplication(new SpringApplicationBuilder()).run(args);
}
private static SpringApplicationBuilder configureApplication(SpringApplicationBuilder builder) {
return builder.sources(Application.class).bannerMode(Banner.Mode.OFF);
}
}
后面说一下,SpringBoot应用部署到不同的容器中;