springboot 使用第三方tomcat 运行

来源:互联网 发布:淘宝网怎么添加客服 编辑:程序博客网 时间:2024/06/10 11:17

将这个 spring Boot 项目的打包方式设置为 war。

<packaging>war</packaging>

去除內嵌tomcat

SpringBoot 默认有内嵌的 tomcat 模块,因此,我们要把这一部分排除掉。(注意不放在第三方tomcat不要去掉),可以先自测没问题,再去除,当然不去除在第三方tomcat下也可以运行

 <dependency>        <groupId>org.springframework.boot</groupId>        <artifactId>spring-boot-starter-web</artifactId>        <!-- 如果在使用自带tomcat请注释下面,如果使用第三方tomcat不要注释下面 -->         <exclusions>                  <exclusion>                      <groupId>org.springframework.boot</groupId>                      <artifactId>spring-boot-starter-tomcat</artifactId>                  </exclusion>              </exclusions>     </dependency>


完整maven配置

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">  <modelVersion>4.0.0</modelVersion>  <groupId>springboot</groupId>  <artifactId>springboot-test</artifactId>  <version>0.0.1-SNAPSHOT</version>  <name>springboot-test</name>  <packaging>war</packaging>  <parent>    <groupId>org.springframework.boot</groupId>    <artifactId>spring-boot-starter-parent</artifactId>    <version>1.4.3.RELEASE</version></parent><dependencies>    <dependency>        <groupId>org.springframework.boot</groupId>        <artifactId>spring-boot-starter-web</artifactId>        <!-- 如果在使用自带tomcat请注释下面,如果使用第三方tomcat不要注释下面 -->         <exclusions>                  <exclusion>                      <groupId>org.springframework.boot</groupId>                      <artifactId>spring-boot-starter-tomcat</artifactId>                  </exclusion>              </exclusions>     </dependency><dependency>    <groupId>javax.servlet</groupId>    <artifactId>servlet-api</artifactId>    <version>3.0-alpha-1</version></dependency>    </dependencies>  <build>        <plugins>        <!-- 如果要打成jar包并使用 java -jar **.jar运行,请不要注释spring-boot-maven-plugin -->         <!--    <plugin>                <groupId>org.springframework.boot</groupId>                <artifactId>spring-boot-maven-plugin</artifactId>            </plugin> -->            <plugin>    <groupId>org.apache.maven.plugins</groupId>    <artifactId>maven-war-plugin</artifactId>    <configuration>        <warName>springboot</warName>    </configuration></plugin>        </plugins>    </build></project>


项目结构

springboot-test├── pom.xml├── src│   ├── main│   │   ├── index.jsp│   │   ├── java│   │   │   └── com│   │   │       └── lhy│   │   │           ├── controller│   │   │           │   └── SampleController.java│   │   │           └── init│   │   │               └── Application.java│   │   └── resources│   │       └── application.properties│   └── test│       ├── java│       └── resources├── target│   ├── classes│   ├── m2e-jee│   └── test-classes└── work    └── Tomcat        └── localhost            └── aaa


注意,程序不要放在默认的default package 目录下,不然有可能会报错

main程序,Application.java

启动tomcat会自动找

提供一个 SpringBootServletInitializer 子类,并覆盖它的 configure 方法。我们可以把应用的主类改为继承SpringBootServletInitializer。或者另外写一个类。

package com.lhy.init;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.EnableAutoConfiguration;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.boot.builder.SpringApplicationBuilder;import org.springframework.boot.web.support.SpringBootServletInitializer;import org.springframework.context.annotation.ComponentScan;import org.springframework.context.annotation.Configuration;@SpringBootApplication@Configuration  @ComponentScan(basePackages="com.lhy")   //默认扫描是当前包下的路径@EnableAutoConfiguration  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);    }}


controller 类SampleController.java

package com.lhy.controller;import org.springframework.stereotype.*;import org.springframework.web.bind.annotation.*;@Controllerpublic class SampleController {    @RequestMapping("/")    @ResponseBody    String home() {        return "Hello world";    }}


打包运行

注意:部署到 tomcat 以后,访问这个项目的时候,须要带上这个项目的 war 包名。

另外,我们还可以使用 war 插件来定义打包以后的 war 包名称,以免 maven 为我们默认地起了一个带版本号的 war 包名称。例如:

  <plugin>    <groupId>org.apache.maven.plugins</groupId>    <artifactId>maven-war-plugin</artifactId>    <configuration>        <warName>springboot</warName>    </configuration></plugin>

把打包好的springboot.war 放在tomcat中,启动。

输入 localhost:8080/springboot




0 0
原创粉丝点击