搭建 Spring Boot 项目

本文详细介绍SpringBoot项目的创建过程,包括使用不同工具创建项目的方法、项目目录结构解析、启动方式及配置说明。同时介绍了Actuator组件的使用,以及如何将SpringBoot应用部署到应用服务器。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

# 搭建 Spring Boot 项目

一、创建方式

  • 使用浏览器打开 http://start.spring.io ,填写相关信息,点击 Generate Project 生成项目。

  • 使用Spring Tool Suite创建Spring Boot项目。

  • 使用IntelliJ IDEA创建Spring Boot项目。New Project -> Spring Initializr -> 选择Default -> 填写项目信息 -> 勾选模版 -> Finish

二、项目目录结构

勾选web模板后,项目目录结构如下图:

目录结构

  • DemoApplication.java:一个带有 main() 方法的类,用于配置和引导。

  • application.properties:一个空的properties文件,可以根据需要添加配置属性。

  • DemoApplicationTests.java :一个空的JUnit测试类。

三、使用 IDEA 启动 Spring Boot

选中DemoApplication.java,右键运行。

PS:Spring Boot 默认web容器是 Tomcat 。 可根据需求修改web容器,如 Jetty 或者 Undertow 。

四、介绍

  • DemoApplication.java

      @SpringBootApplication
      public class DemoApplication {
    
          public static void main(String[] args) {
              SpringApplication.run(DemoApplication.class, args);
          }
      }
    • @SpringBootApplication

      开启了Spring的组件扫描和Spring Boot的自动配置功能。实际上是将如下三个注解组合在了一起。

      • Spring 的 @Configuration :标明该类使用Spring基于Java的配置。
      • Spring 的 @ComponentScan :启用组件扫描。
      • Spring Boot 的 @EnableAutoConfiguration :开启Spring Boot自动配置。
    • SpringApplication.run(DemoApplication.class, args);

      负责启动引导应用程序。

  • application.properties

    • 禁用模板缓存

      添加如下配置:

        spring.thymeleaf.cache=false
    • 配置嵌入式服务器

      • 指定服务端口(默认服务端口为 8080):

          server.port=8089
      • 配置https服务:

        通过keytool生成证书

          keytool -genkey -alias tomcat -keyalg RSA -keystore tomcat.keystore

        添加如下配置

          #端口号
          server.port=8443
          #通过keytool生成的证书,放在application.properties同级目录下
          server.ssl.key-store=tomcat.keystore
          #密钥库密码
          server.ssl.key-store-password=tomcat
          server.ssl.keyStoreType=JKS
          server.ssl.keyAlias:tomcat

五、Actuator

通过发布的组件、度量和指标来了解程序运行情况。启用Actuator在pom中添加如下配置:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

常用端点如下:

请求方式路径描述
GET/configprops描述配置属性如何注入bean
GET/beans描述应用程序上下文里全部的Bean,以及它们的关系
GET/env获取全部环境属性
GET/env/{name}根据名称获取特定的环境属性
GET/health报告应用程序的健康指标。值由HealthIndicator实现类提供
GET/info获取应用程序的定制信息
GET/mappings描述全部的URL路径
GET/metrics报告各种应用程序度量信息
GET/metrics/{name}报告指定名称的应用程序度量值
POST/shutdown关闭应用程序

PS:Spring Boot 2.0 默认仅启用了healthinfo端点。可通过在配置文件中设置management.endpoint.<id>.enabled属性值为true启用其它端点。并可通过management.endpoints.enabled-by-default来修改全局端口默认配置。(详细文档介绍)

六、部署Spring Boot应用程序

  • 部署到应用服务器

    1. 修改pom文件,将 <packaging> 元素的值从 jar 改为 war

       <packaging>war</packaging>
    2. 移除内嵌的tomcat模块。但为方便了在本机进行测试,还需要引入它,所以配置如下:

       <dependency>  
           <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>  
       <dependency>  
           <groupId>org.springframework.boot</groupId>  
           <artifactId>spring-boot-starter-tomcat</artifactId>  
           <scope>provided</scope>  
       </dependency>
    3. 添加tomcat-servelt-api依赖

       <dependency>  
           <groupId>org.apache.tomcat</groupId>  
           <artifactId>tomcat-servlet-api</artifactId>  
           <version>7.0.42</version>  
           <scope>provided</scope>  
       </dependency>
    4. 修改入口方法。继承SpringBootServletInitializer类,并且覆盖configure方法

       @SpringBootApplication  
       public class DemoApplication extends SpringBootServletInitializer {  
      
           @Override  
           protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {  
               return application.sources(DemoApplication.class);  
           }  
      
           public static void main(String[] args) {  
               SpringApplication.run(DemoApplication.class, args);  
           }  
       }
    5. 添加war插件,用来自定义打包以后的war包的名称

       <plugin>  
           <groupId>org.apache.maven.plugins</groupId>  
           <artifactId>maven-war-plugin</artifactId>  
           <configuration>  
               <warSourceExcludes>src/main/resources/**</warSourceExcludes>  
               <warName>demo</warName>  
           </configuration>  
       </plugin>
  • 配置数据源

    手动添加oracle驱动包(已下载,根据maven配置,放入指定文件夹下),cmd中执行

      mvn install:install-file -DgroupId=com.oracle -DartifactId=ojdbc6 -Dversion=11.2.0 -Dpackaging=jar -Dfile=ojdbc6.jar

    在pom中添加驱动

      <dependency>  
          <groupId>com.oracle</groupId>  
          <artifactId>ojdbc6</artifactId>  
          <version>11.2.0</version>
      </dependency> 

    在pom中添加jpa依赖

      <dependency>  
          <groupId>org.springframework.boot</groupId>  
          <artifactId>spring-boot-starter-data-jpa</artifactId>  
      </dependency> 

    在配置文件中添加如下配置

      spring.jpa.database=oracle
      spring.datasource.driver-class-name=oracle.jdbc.driver.OracleDriver
      spring.datasource.url=jdbc:oracle:thin:@127.0.0.1:1521:orcl
      spring.datasource.username=用户名
      spring.datasource.password=密码
      # [create|create-drop|update|validate]
      spring.jpa.hibernate.ddl-auto=update
    • create

      每次加载hibernate时都会删除上一次的生成的表,然后根据你的model类再重新来生成新表,哪怕两次没有任何改变也要这样执行,这就是导致数据库表数据丢失的一个重要原因。

    • create-drop

      每次加载hibernate时根据model类生成表,但是sessionFactory一关闭,表就自动删除。

    • update

      最常用的属性,第一次加载hibernate时根据model类会自动建立起表的结构(前提是先建立好数据库),以后加载hibernate时根据 model类自动更新表结构,即使表结构改变了但表中的行仍然存在不会删除以前的行。要注意的是当部署到服务器后,表结构是不会被马上建立起来的,是要等 应用第一次运行起来后才会。

    • validate

      每次加载hibernate时,验证创建数据库表结构,只会和数据库中的表进行比较,不会创建新表,但是会插入新值。

转载于:https://www.cnblogs.com/wscy/p/9105659.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值