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说明:
- relativePath是指定父工程的地址,默认为
../
,即上级目录。 - 外部项目作为父工程,配置为空节点
。 - 如果子工程并不在父工程中,需要在子工程中指定相对路径,如:
。../path-to-parent
新建子级工程
一般最外层的父工程可以管理一些版本,插件等,可以在此基础上新建spring boot jar工程了,当然子项目内部的工程可以有自己的父级工程,自定义一些通用的配置。
新建子工程
可以用idea向导生成子工程,按照向导新建即可,但是有时候网络有问题,可能会失败。子项目名称:simple-boot-demo,后续会添加mybatis-plus提供数据库访问。
也可以使用https://start.spring.io/网站来生成子项目(最主要依赖是Spring Web):
生成后修改说明:
- 修改生成项目的父工程指向我们自定义的父工程。
- 如果再网站生成的工程,需要在父级工程的pom.xml中把子工程module配置进去:
simple-boot-demo - 一般情况下,我们都安装有自己maven,不需要嵌入的maven wrapper,可以删除mvnw相关文件。
- 如果有写死的依赖版本,建议移到父级工程统一管理。
- 建议修改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
配置说明:
- 由于使用嵌入的内存H2数据库,用户、密码、数据库名称等都可以随便写,启动的时候生成。
- 启动时会根据schema和data配置的sql,建立表结构和插入数据。
- 默认情况下会有h2的控制台,启动项目后可以通过它管理数据库,地址如下:http://localhost:8080/h2-console
- 通过
spring.h2.console.enabled=true
控制是否开启控制台。 - 另外
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]"
}]