Spring Boot工程基本环境Demo

Spring Boot工程基本环境Demo

新建统一Spring Boot的父工程

新建一个通用的父工程,为pom工程,继承于spring-boot-starter-parent,可以维护一些自定义的版本、插件等信息等。

然后可以再在下级新建子项目的pom或者jar工程。

下面以简单的数据库访问工程为例,会使用到lombok、mybatis-plus,需要引入相关的版本配置。

详细源码地址:https://github.com/fugary/meng-study/tree/master/simple-boot-parent

父工程POM



    4.0.0
    com.mengstudy
    simple-boot-parent
    0.0.1-SNAPSHOT
    pom
    
        
        simple-boot-demo
        
        simple-boot-transaction-parent
    
    simple-boot-parent
    Simple parent project for Spring Boot
    
        org.springframework.boot
        spring-boot-starter-parent
        2.2.5.RELEASE
         
    
    
        1.8
        2.1.2
        3.3.1
    
    
        
            
                org.mybatis.spring.boot
                mybatis-spring-boot-starter
                ${mybatis-spring-boot-starter.version}
            
            
                com.baomidou
                mybatis-plus-boot-starter
                ${mybatis-plus-boot-starter.version}
            
        
    
    
        
            org.projectlombok
            lombok
        
    

继承Spring Boot项目

通常Spring Boot项目需要继承spring-boot-starter-parent项目,里面已经定义很多常用的依赖库的版本,由于spring-boot-starter-parent作为父级项目是在外部仓库,因此需要配置relativePath。


    org.springframework.boot
    spring-boot-starter-parent
    2.2.5.RELEASE
     

关于relativePath说明:

  1. relativePath是指定父工程的地址,默认为../,即上级目录。
  2. 外部项目作为父工程,配置为空节点
  3. 如果子工程并不在父工程中,需要在子工程中指定相对路径,如:../path-to-parent

新建子级工程

一般最外层的父工程可以管理一些版本,插件等,可以在此基础上新建spring boot jar工程了,当然子项目内部的工程可以有自己的父级工程,自定义一些通用的配置。

新建子工程

可以用idea向导生成子工程,按照向导新建即可,但是有时候网络有问题,可能会失败。子项目名称:simple-boot-demo,后续会添加mybatis-plus提供数据库访问。

image
image

也可以使用https://start.spring.io/网站来生成子项目(最主要依赖是Spring Web):

image

生成后修改说明:

  1. 修改生成项目的父工程指向我们自定义的父工程。
  2. 如果再网站生成的工程,需要在父级工程的pom.xml中把子工程module配置进去:simple-boot-demo
  3. 一般情况下,我们都安装有自己maven,不需要嵌入的maven wrapper,可以删除mvnw相关文件。
  4. 如果有写死的依赖版本,建议移到父级工程统一管理。
  5. 建议修改application.properties为application.yml,yml格式是更好用的配置文件,尤其是对象、数组、键值对等支持比较好。

pom.xml实例:



    4.0.0
    
        com.mengstudy
        simple-boot-parent
        0.0.1-SNAPSHOT
    
    com.mengstudy
    simple-boot-demo
    0.0.1-SNAPSHOT
    simple-boot-demo
    Demo project for simple Spring Boot
    
        1.8
    
    
        
            org.springframework.boot
            spring-boot-starter-web
        
        
        
            org.mybatis.spring.boot
            mybatis-spring-boot-starter
        
        
            org.springframework.boot
            spring-boot-devtools
            runtime
            true
        
        
            com.h2database
            h2
            runtime
        
        
            org.springframework.boot
            spring-boot-configuration-processor
            true
        
        
            org.projectlombok
            lombok
            true
        
        
        
            org.springframework.boot
            spring-boot-starter-test
            test
            
                
                    org.junit.vintage
                    junit-vintage-engine
                
            
        
    
    
        
            
                org.springframework.boot
                spring-boot-maven-plugin
            
        
    

简单测试子项目

修改启动文件SimpleBootDemoApplication,用向导生成项目的时候这个文件会自动生成。添加@RestController,然后添加注解方法。

启动项目:在idea中直接右键此文件,弹出菜单中选Debug或者Run即可,也可以用maven命令mvn spring-boot:run启动,此命令使用了maven插件spring-boot-maven-plugin,此插件在pom.xml中已经配置好:

@RestController
@SpringBootApplication
public class SimpleBootDemoApplication {

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

   @RequestMapping("/hello")
   public String hello(){
      return "Hello World!";
   }
}

访问http://localhost:8080/hello,可以看到有Hello World!输出,即表示成功了。

另外可以引入spring-boot-starter-actuator提供一些统计状态信息:


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

actuator信息输出,地址:http://localhost:8080/actuator,json返回里面会显示一些可以访问的地址:

{
  "_links": {
    "self": {
      "href": "http://localhost:8080/actuator",
      "templated": false
    },
    "health": {
      "href": "http://localhost:8080/actuator/health",
      "templated": false
    },
    "health-path": {
      "href": "http://localhost:8080/actuator/health/{*path}",
      "templated": true
    },
    "info": {
      "href": "http://localhost:8080/actuator/info",
      "templated": false
    }
  }
}

配置application.yml

Spring Boot项目使用此配置文件,可以配置SpringBoot项目信息,如名称、端口,日志等。

YAML格式中文参考:http://www.ruanyifeng.com/blog/2016/07/yaml.html

此文件默认为空文件,默认不配置端口的话是8080端口。

简单配置:

server:
  port: 8080
spring:
  application:
    name: simple-boot-demo

添加数据库访问

目前参考mybatis-plus提供基本数据库访问例子,稍作修改使用。

参考文档:https://mp.baomidou.com/guide/quick-start.html

基本数据定义

db/schema-h2.sql

DROP TABLE IF EXISTS user;

CREATE TABLE user
(
   id BIGINT(20) NOT NULL COMMENT '主键ID',
   name VARCHAR(30) NULL DEFAULT NULL COMMENT '姓名',
   birth timestamp NULL DEFAULT NULL COMMENT '生日',
   email VARCHAR(200) NULL DEFAULT NULL COMMENT '邮箱',
   PRIMARY KEY (id)
);

db/data-h2.sql

DELETE FROM user;

INSERT INTO user (id, name, birth, email) VALUES
(1, 'Gary', '2000-01-01', '[email protected]'),
(2, 'Jerry', '2000-01-02', '[email protected]'),
(3, 'Tom', '2000-01-03', '[email protected]')

添加Mybatis-Plus配置

父级配置上版本号和依赖管理


    com.baomidou
    mybatis-plus-boot-starter
    
    ${mybatis-plus-boot-starter.version} 

子项目引入mybatis-plus,以及h2内嵌数据库:


   com.baomidou
   mybatis-plus-boot-starter


   com.h2database
   h2
   runtime

添加数据库配置

在application.yml中添加数据库相关配置:

server:
  port: 8080
spring:
  application:
    name: simple-boot-demo
  datasource:
    driver-class-name: org.h2.Driver
    schema: classpath:db/schema-h2.sql
    data: classpath:db/data-h2.sql
    url: jdbc:h2:mem:simpledb
    username: root
    password: 123456
  h2:
    console:
      enabled: false

配置说明:

  1. 由于使用嵌入的内存H2数据库,用户、密码、数据库名称等都可以随便写,启动的时候生成。
  2. 启动时会根据schema和data配置的sql,建立表结构和插入数据。
  3. 默认情况下会有h2的控制台,启动项目后可以通过它管理数据库,地址如下:http://localhost:8080/h2-console
  4. 通过spring.h2.console.enabled=true控制是否开启控制台。
  5. 另外spring.h2.console.settings.web-allow-others=true,开启后控制台可以在远程访问。

实体和Mapper

目前使用Mybatis-Plus简化测试,没有特殊定制,可以不用xml文件。

User实体类:

@Data
public class User {
    private Long id;
    private String name;
    private Date birth;
    private String email;
}

UserMapper类:

public interface UserMapper extends BaseMapper {
}

数据库访问测试

SimpleBootDemoApplication添加MapperScan扫描包@MapperScan("com.mengstudy.simple.boot.demo.mapper")

引入UserMapper,然后查询测试

@RestController
@MapperScan("com.mengstudy.simple.boot.demo.mapper")
@SpringBootApplication
public class SimpleBootDemoApplication {

   @Autowired
   private UserMapper userMapper;

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

   @RequestMapping("/hello")
   public String hello(){
      return "Hello World!";
   }

   @RequestMapping("/users")
   public List users(){
      return userMapper.selectList(null);
   }

}

启动项目,测试访问:http://localhost:8080/users

输出:

[{
    "id": 1,
    "name": "Gary",
    "birth": "1999-12-31T16:00:00.000+0000",
    "email": "[email protected]"
}, {
    "id": 2,
    "name": "Jerry",
    "birth": "2000-01-01T16:00:00.000+0000",
    "email": "[email protected]"
}, {
    "id": 3,
    "name": "Tom",
    "birth": "2000-01-02T16:00:00.000+0000",
    "email": "[email protected]"
}]

你可能感兴趣的:(Spring Boot工程基本环境Demo)