使用外部容器(如tomcat)运行spring-boot项目需要注意的问题

基于maven构建的项目

spring-boot项目可以快速构建web应用,其内置的tomcat容器也十分方便我们的测试运行;

平常我们所使用的jar包方式,要使用外部容器运行项目,需要对项目做一些修改。

 

spring-boot项目需要部署在外部容器中的时候,spring-boot导出的war包无法再外部容器(tomcat)中运行或运行报错,本章就是详细讲解如何解决这个问题

1、pom.xml一览


	4.0.0
	项目名称自行定义
	项目名称自行定义
	1.1.2-SNAPSHOT
	war
	
		org.springframework.boot
		spring-boot-starter-parent
		1.4.0.RELEASE
	
	
		
		
			org.springframework.boot
			spring-boot-starter-web
			
			
				
					org.springframework.boot
					spring-boot-starter-tomcat
				
			
			 
		
		
			javax.servlet
			javax.servlet-api
		
		
		
			redis.clients
			jedis
		
 
		
		
			org.apache.commons
			commons-pool2
		
 
		
			org.json
			json
		
 
		
			org.springframework.boot
			spring-boot-starter-test
			test
		
	
	
	
	
		
			
				org.springframework.boot
				spring-boot-maven-plugin
			
		
	
	
		
			spring-releases
			https://repo.spring.io/libs-release
		
	
	
		
			spring-releases
			https://repo.spring.io/libs-release
		
	

首先改成war包方式war

2、排除org.springframework.boot依赖中的tomcat内置容器

注意:只有排除内置容器,才能让外部容器运行spring-boot项目

 

org.springframework.boot依赖中的排除项,测试时不要排除内置容器,会导致springboot无法测试运行,导出war包时再加上该项即可



org.springframework.boot
spring-boot-starter-web



org.springframework.boot
spring-boot-starter-tomcat


3、实现SpringBootServletInitializer接口

spring-boot入口类必须实现SpringBootServletInitializer接口的configure方法才能让外部容器运行spring-boot项目

注意:SpringBootServletInitializer接口需要依赖 javax.servlet

@SpringBootApplication
@ServletComponentScan
@EnableTransactionManagement
@MapperScan({"cn.gkate.*.*dao" })
public class GkateApplication {
    public static void main(String[] args) {
        SpringApplication springApplication = new SpringApplication(GkateApplication.class);
        springApplication.run(args);
    }

}

 

 

/**
 * web容器中进行部署 总结: 外部容器运行spring-boot项目,只需要在原项目上做两件事
 * 
 * 1、在pom.xml中排除org.springframework.boot的内置tomcat容器
 * 2、spring-boot入口实现SpringBootServletInitializer接口
 * 补充:SpringBootServletInitializer接口依赖javax.servlet包,需要在pom.xml中引入该包
 * 
 * @author linzesi
 */
public class GkateServletInitializer extends SpringBootServletInitializer {
    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
        return application.sources(GkateApplication.class);
    }

}

 

 

总结:

外部容器运行spring-boot项目,只需要在原项目上做两件事

1、将package改成war包方式

2、在pom.xml中排除org.springframework.boot的内置tomcat容器

3、SpringBootServletInitializer接口依赖javax.servlet包,需要在pom.xml中引入该包

4、spring-boot入口实现SpringBootServletInitializer接口

你可能感兴趣的:(springboot,javaweb)