独立Tomcat运行
讲解了这么久,一般上我们都是通过jar包的方式进行启动的应用的。所以部署在独立的tomcat
时,需要如何解决呢?其实也简单,只需要将项目打包方式修改为war
包,然后修改下启动类配置即可。
0.修改pom打包方式为war
,同时排除了内置的tomcat
。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| <packaging>war</packaging>
<!-- 排除内置的tomcat -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>compile</scope>
</dependency>
<!-- 若直接有使用servlet对象时(这是废话,⊙﹏⊙‖∣),需要将servlet引入,本例是没有的~ -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<scope>provided</scope>
</dependency>
|
1.改造下启动类,使其继承SpringBootServletInitializer
,同时覆盖configure
方法。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
| @SpringBootApplication
@Slf4j
public class ChapterApplication extends SpringBootServletInitializer{
public static void main(String[] args) {
SpringApplication.run(ChapterApplication.class, args);
// new SpringApplicationBuilder().sources(ChapterApplication.class).web(false).run(args);
//之后这里设置业务逻辑 比如挂起一个线程 或者设置一个定时任务。保证不退出
//不然它就是一个启动类,启动后就停止了。
log.info("jar,chapter启动!");
}
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
log.info("外部tomcat,chapter启动!");
return application.sources(ChapterApplication.class);
}
}
|
2.maven打包成war(mvn clean install
),然后放入tomcat中,启动运行即可。
外部Servlet启动
其实这样设置的话,在开发时直接运行启动类也还是可以直接运行的,方便.
原始方式启动