欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Springboot打成war包放入tomcat的webapps中启动

程序员文章站 2024-02-29 07:58:10
...

下面具体介绍如何配置springboot项目打成war包

 

  1. 打成war包启动和本地用过main方法启动不同,本地main方法启动是依赖于内置的tomcat,而打成war包是放到tomcat内启动,所以要剔除掉tomcat的依赖部分,但还要保存servlet的部分。需要在pom.xml中增加配置如下:
    		<packaging>war</packaging>
    		
    		<dependency>
    			<!-- 指定为Web应用,并启动一个内嵌的Servlet容器(默认是Tomcat)用于处理HTTP请求 -->
    			<groupId>org.springframework.boot</groupId>
    			<artifactId>spring-boot-starter-web</artifactId>
    			 <exclusions>
    		        <exclusion>
    		            <groupId>org.springframework.boot</groupId>
    		            <artifactId>spring-boot-starter-tomcat</artifactId>
    		        </exclusion>
    		    </exclusions>
    		</dependency>
    		
    		<!-- springboot本身开发出来只支持3.0以上,为了让spring boot支持servlet2.5 -->
    		<dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-tomcat</artifactId>
                <!--打包的时候可以不用包进去,别的设施会提供。事实上该依赖理论上可以参与编译,测试,运行等周期。     相当于compile,但是打包阶段做了exclude操作-->
                <scope>provided</scope>
    	    </dependency>
    

     

  2. 方法主入口继承SpringBootServletInitializer类并实现configure方法
    /**
     * 配置除去了自动配置数据源的类-DataSourceAutoConfiguration,因为
     * 这个注解会把sping的配置的数据源全部都自动注入,不会默认注入一个,当使用其他数据源时再调用另外的数据源。
     * @author zhanglf
     *
     */
    @SpringBootApplication(exclude={DataSourceAutoConfiguration.class})
    public class Application  extends SpringBootServletInitializer{
    
    	public static void main(String[] args) {
    		SpringApplication.run(Application.class, args);
    	}
    
    	@Override
    	protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
    		 return builder.sources(Application.class);
    	}
    }

     

经过以上两步即可实现打成war包,并在tomcat中正常启动。但是!如果想访问controller层的方法,这些配置还是不够的。还要注意tomcat版本兼容问题,springboot2.0以上与tomcat7会有兼容问题,可以选择提升tomcat版本,或者在tomcat的lib中添加依赖jar包