springboot使用外置tomcat启动方式

下面是关于“springboot使用外置tomcat启动方式”的完整攻略。

1. 准备工作

在开始使用外置tomcat启动SpringBoot应用之前,需要先进行一些准备工作。

1.1 确认Tomcat版本

确保Tomcat版本符合SpringBoot版本要求。可以通过SpringBoot官方文档中的 Supported Application Servers 查看具体的版本要求。

1.2 修改maven依赖

pom.xml文件中,将<packaging>jar</packaging>改为<packaging>war</packaging>,并添加<scope>provided</scope>以排除内置tomcat的依赖。具体的代码如下:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    <scope>provided</scope>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-tomcat</artifactId>
    <scope>provided</scope>
</dependency>

1.3 配置SpringBoot的servletInitializer

org.springframework.boot.context.web.SpringBootServletInitializer是一个支持外部容器部署的SpringBoot支持类,需要在应用的入口类(通常是一个用于启动应用的main方法所在的类)上继承该类。例如:

@SpringBootApplication
public class MyApplication extends SpringBootServletInitializer {

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
        return application.sources(MyApplication.class);
    }

    public static void main(String[] args) {
        SpringApplication.run(MyApplication.class, args);
    }
}

2. 打包可部署的war文件

执行mvn clean package命令,生成可部署的war文件,该文件默认位于target目录下。

3. 部署war文件到外置Tomcat

将生成的war文件拷贝到外置tomcat的webapps目录下,并启动tomcat。之后访问 http://localhost:8080/MyApplication/ 即可访问应用。

示例一

以下是一个控制器,用于处理在浏览器中访问 /greeting 命令时返回一条问候语。在控制器类上加上注解@RestController即可将其转换为web控制器类。

@RestController
public class GreetingController {

    @GetMapping("/greeting")
    public String greeting() {
        return "Hello World!";
    }
}

执行mvn clean package命令生成war包,将其拷贝到外置Tomcat的webapps目录下,并启动Tomcat,访问 http://localhost:8080/MyApplication/greeting 即可看到页面上输出“Hello World!”的信息。

示例二

以下是一个使用JDBC连接数据库的示例,需要在pom.xml中添加mysql驱动的依赖:

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.19</version>
</dependency>

修改application.properties文件中的数据库相关配置:

spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8&serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=root

创建一个包含数据操作的服务类:

@Service
public class UserService {

    @Autowired
    private JdbcTemplate jdbcTemplate;

    public List<Map<String,Object>> getUsers() {
        String sql = "select * from user";
        return jdbcTemplate.queryForList(sql);
    }
}

创建一个web控制器类,用于向页面返回获取到的数据:

@RestController
public class UserController {

    @Autowired
    private UserService userService;

    @GetMapping("/users")
    public List<Map<String,Object>> getUsers() {
        return userService.getUsers();
    }
}

如果没有异常抛出,执行mvn clean package命令,生成war文件,将其拷贝到外置Tomcat的webapps目录下,启动Tomcat,即可访问 http://localhost:8080/MyApplication/users,看到从数据库中获取到的数据。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:springboot使用外置tomcat启动方式 - Python技术站

(0)
上一篇 2023年5月19日
下一篇 2023年5月19日

相关文章

  • java的Builder原理和实现详解

    Java的Builder模式原理和实现详解 什么是Builder模式? Builder模式是Java中的一种设计模式,它允许您创建复杂对象而无需了解其内部细节。此模式外部提供一种访问内部对象的流畅界面。 为什么需要Builder模式? 在Java中,创建具有多个属性的对象是一项常见的任务。然而,当您的对象有大量的属性时,创建对象的代码变得非常冗长和难以维护。…

    Java 2023年5月19日
    00
  • Java如何将处理完异常之后的程序能够从抛出异常的地点向下执行?

    在 Java 中,可以使用异常处理机制来捕获和处理异常,如果在程序执行过程中抛出了异常,那么程序会立即停止执行。为了解决这个问题,Java 提供了异常处理机制,可以通过捕获异常并处理它们,使得程序能够继续执行下去。 当程序运行时发生异常时,程序会跳转到与异常相符的 catch 语句块,并执行该语句块中的代码,处理完异常后可以通过尝试继续执行下一个块语句来使程…

    Java 2023年5月27日
    00
  • java信号量控制线程打印顺序的示例分享

    Java信号量是一种同步原语,用于控制线程并发访问资源的数量。Java信号量的主要作用是保护临界区,以确保在任何时刻只有特定数量的线程可以访问该区域。在这里,我们将分享一个Java信号量控制线程打印顺序的示例,该示例演示如何使用Java信号量来协调多个线程以按特定顺序打印。 1. 示例一 在这个示例中,我们将创建两个线程,一个线程负责打印奇数,另一个线程负责…

    Java 2023年5月26日
    00
  • Java中使用fileupload组件实现文件上传功能的实例代码

    介绍 在Java Web开发中,文件上传功能是一个非常常见和基础的功能。而使用fileupload组件实现文件上传,不仅方便易用,而且功能强大,能够满足大多数文件上传需求。 本文将介绍如何使用fileupload组件实现文件上传功能的实例代码并附有完整代码和两个示例供您参考。在实现文件上传的过程中,我们需要引入Apache Commons FileUploa…

    Java 2023年5月19日
    00
  • Java多线程环境下SimpleDateFormat类安全转换

    Java多线程环境下的SimpleDateFormat类转换是一个非常常见的问题。如果在多线程环境下不正确使用SimpleDateFormat类,可能会导致线程安全问题,例如线程安全问题、SimpleDateFormat线程不安全等等。因此,正确地使用SimpleDateFormat类对于Java程序员来说至关重要。下面是一个完整的攻略,包括示例说明。 1.…

    Java 2023年6月1日
    00
  • 详解Java编程中Annotation注解对象的使用方法

    下面就是详解Java编程中Annotation注解对象的使用方法的完整攻略: 什么是Annotation注解对象 Annotation(注解)是JDK1.5及以后版本中引入的一个特性,它可以在不修改源代码的情况下对源代码进行补充说明、配置及其他操作。Annotation可以附加在package、类、方法、成员变量、方法参数等的前面,用来对这些元素进行说明、配…

    Java 2023年5月26日
    00
  • java字节字符转换流操作详解

    Java字节字符转换流操作详解 什么是Java字节字符转换流? Java字节字符转换流是Java I/O API中的一种高级流(也叫过滤流或处理流),用于在字节流和字符流之间进行转换。在Java中,通常使用字节流来处理二进制数据文件、图像文件和音频文件等等,而使用字符流来处理文本文件。但是在实际开发中,我们可能需要将字节流转换成字符流或将字符流转换成字节流。…

    Java 2023年5月20日
    00
  • 类卸载的实现原理是什么?

    类卸载是指在代码执行过程中,由于某种原因,已加载的类被卸载并从JVM中移除。Java虚拟机规范并没有明确要求JVM自动实现卸载机制,但目前大部分虚拟机都支持类卸载。 实现类卸载的原理是基于类的生命周期。当一个类不再需要时,JVM会从内存中卸载它。在类被卸载之前,JVM需要保证该类不再被引用。如果某个类已经被加载并引用了,在程序中不再引用该类的对象后,JVM会…

    Java 2023年5月11日
    00
合作推广
合作推广
分享本页
返回顶部