一:新建一个普普通通的springBoot项目
二:并且编写测试controller
@RequestMapping
@RestController
public class Controller {
@RequestMapping("/zzh")
public String toString() {
return "zzh666";
}
}
三:改造启动类(重点)
主要就是继承SpringBootServletInitializer,实现SpringBootServletInitializer可以让spring-boot项目在web容器中运行
@SpringBootApplication
public class AlinkApplication extends SpringBootServletInitializer {
/**
* 实现SpringBootServletInitializer可以让spring-boot项目在web容器中运行
*/
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
builder.sources(this.getClass());
return super.configure(builder);
}
public static void main(String[] args) {
SpringApplication.run(AlinkApplication.class, args);
}
}
四:配置pom文件
添加如下依赖:就是排除内置tomcat和web环境运行的依赖
<!-- spring-boot web -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<!-- 排除内置容器,排除内置容器导出成war包可以让外部容器运行spring-boot项目-->
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
</dependency>
修改打包方式为war
<packaging>war</packaging>
打包
点clean在点package成功打包
测试
把这个war扔我服务器上测试一下
由于我的tomcat没有配置server文件中的Context 结点,所以url需要手动输入指定访问哪个项目。成功啦nice。另外我这里的项目配置了
server.servlet.context-path=/MyProject失效了,emm无解了。如果生效应该要输入,http://ip/demo-0.0.1-SNAPSHOT/MyProject/zzh吧,哈哈哈哈,我搞不清就这样吧,能访问就行