搭建 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中添加如下配置:


org.springframework.boot
spring-boot-starter-actuator

常用端点如下:

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

      war

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


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


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




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

    3. 添加tomcat-servelt-api依赖


      org.apache.tomcat
      tomcat-servlet-api
      7.0.42
      provided

    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包的名称


      org.apache.maven.plugins
      maven-war-plugin

      src/main/resources/**
      demo

  • 配置数据源

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

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

    在pom中添加驱动


    com.oracle
    ojdbc6
    11.2.0

    在pom中添加jpa依赖


    org.springframework.boot
    spring-boot-starter-data-jpa

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

    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时,验证创建数据库表结构,只会和数据库中的表进行比较,不会创建新表,但是会插入新值。

 posted on 2018-06-19 16:55  AI.℡  阅读(227)  评论(0)    收藏  举报