# 新建项目

# 开始

使用您熟悉的 IDE 工具,新建一个 Spring Boot 的基础项目。

注意: 项目java 版本1.8,编码:UTF-8,Maven编译版本:1.8

# 引入依赖

在本例中,引入的依赖如下:

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

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-configuration-processor</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <!--        引入工具包-->
        <dependency>
            <groupId>cn.hutool</groupId>
            <artifactId>hutool-all</artifactId>
            <version>5.4.7</version>
        </dependency>
        <!--        引入 api 文档便于调试-->
        <dependency>
            <groupId>com.github.xiaoymin</groupId>
            <artifactId>knife4j-spring-boot-starter</artifactId>
            <version>2.0.7</version>
        </dependency>
        <!--        对象转换-->
        <dependency>
            <groupId>org.mapstruct</groupId>
            <artifactId>mapstruct</artifactId>
            <version>1.4.1.Final</version>
        </dependency>
        <dependency>
            <groupId>org.mapstruct</groupId>
            <artifactId>mapstruct-processor</artifactId>
            <version>1.4.1.Final</version>
        </dependency>
        <!-- heimdall spring boot starter -->
        <dependency>
            <groupId>com.github.luterc</groupId>
            <artifactId>heimdall-starter-spring-boot</artifactId>
            <version>1.0.4</version>
        </dependency>
        <!-- OR heimdall caffeine 缓存实现 -->
        <dependency>
            <groupId>com.github.luterc</groupId>
            <artifactId>heimdall-cache-caffeine</artifactId>
            <version>1.0.4</version>
        </dependency>
    </dependencies>

其中:

  • hutool: 工具合集,密码加解密用到,必选
  • mapstruct: 实体类转换,必选
  • knife4j : api 文档,引入主要是为了便于测试,可选。
  • heimdall-starter-spring-boot: Heidamll 权限管理框架 Starter,必选
  • heimdall-cache-caffeine :Heimdall 权限管理框架 caffeine缓存实现,必选。

# 项目结构规划

  • base : 全局公共类,如 mapstruct转换接口定义
  • config : 全局配置文件,如全局异常,MVC 配置等。
  • module:业务模块,系统管理模块、宠物商店模块的具体实现
  • utils : 工具类

# 配置

  • 建立一个空的数据库
  • 修改配置文件中数据库部分信息

参考:

server:
  #服务端口
  port: 10000
spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://1.1.1.1:0000/heimdall_petstore_db?autoReconnect=true&useUnicode=true&characterEncoding=utf-8&allowMultiQueries=true&serverTimezone=CTT
    username: foo
    password: bar
    type: com.zaxxer.hikari.HikariDataSource
    hikari:
      minimum-idle: 5
      maximum-pool-size: 20
      auto-commit: true
      idle-timeout: 60000
      pool-name: HeimdallDataPool
      max-lifetime: 1800000
      connection-timeout: 60000
      connection-test-query: SELECT 1
  #jpa配置
  jpa:
    #注册:OpenEntityManagerInViewInterceptor,view层也会打开事务,也就是可以获取到hibernate session
    open-in-view: true
    #数据库平台和方言配置
    database: mysql #mysql
    properties:
      hibernate:
        #支持无事务情况下的懒加载
        enable_lazy_load_no_trans: false
        #        context
        current_session_context_class: org.springframework.orm.hibernate5.SpringSessionContext
        #显示执行汇总信息
        generate_statistics: false
        #        输出所有SQL语句到控制台
        show_sql: false
        #        在log和console中打印出更格式化的SQL
        format_sql: false
        #        在SQL中生成有助于调试的注释信息
        use_sql_comments: false
        #        强制Hibernate按照被更新数据的主键,为SQL更新排序
        order_updates: true
    hibernate:
      # create, create-drop, update, validate
      # 作用主要用于:自动创建、更新、验证数据库表结构
      ddl-auto: update
logging:
  pattern:
    console: '%boldWhite(%d) | %green([%t]) | [%highlight(%p)] %highlight(%c{1.}.%M\(%L\)): %highlight(%msg%n)'
    file: '%d [%t] %p %c{1.}.%M\(%L\)  %m%n'
  file:
    name: logs/heimdall-petstore.log
  level:
    root: info
# api 文档配置
knife4j:
  enable: true
  production: false


# 启动

配置完毕后,由于使用了 JPA ,需要在启动类上加入事务管理注解,如下所示:

/**
 * The type Heimdall petstore application.
 *
 * @author Luter
 */
@SpringBootApplication
//启用事务管理
@EnableTransactionManagement
public class HeimdallPetstoreApplication {
    public static void main(String[] args) {
        SpringApplication.run(HeimdallPetstoreApplication.class, args);
    }

}

配置完毕后,启动应用。此时,一个空的 SpringBoot 项目已经建立完毕,下一章开始,我们将实现基础的 RBAC 管理功能。

上次更新:: 1/29/2021, 11:05:57 PM