前置条件
在开发之前,要保证环境已经安装正确,详见 开发环境搭建
介绍
创建一个简单的项目,实现记录待办事项的功能。
具体功能包括:创建任务、根据任务Id获取任务、根据ID删除任务、根据任务编号删除任务、根据任务ID更新任务信息。
项目结构
choerodon-todo-service-parent
└─choerodon-todo-service
└─src
├─main
│ ├─java
│ │ └─io
│ │ └─choerodon
│ │ └─todo
│ │ ├─api
│ │ │ ├─controller
│ │ │ │ └─v1
│ │ │ └─dto
│ │ ├─app
│ │ │ └─service
│ │ │ └─impl
│ │ ├─domain
│ │ │ ├─repository
│ │ │ ├─service
│ │ │ │ └─impl
│ │ │ └─todo
│ │ │ ├─convertor
│ │ │ └─entity
│ │ └─infra
│ │ ├─dataobject
│ │ ├─mapper
│ │ └─repository
│ │ └─impl
│ └─resources
│ ├─mapper
│ └─script
│ └─db
└─test
└─java
创建项目
笔者用的IDE是IntelliJ IDEA,请使用Eclipse的开发尝试谅解,IDEA较Eclipse而言,不仅仅是一个代码的编译纠错,它更加地智能化,并且其中集成的各种框架模板可以让你无需任何配置,快速搭起项目结构。尤其是对于基于Boot做脚手架的项目而言,将做到少配置,速开发的敏捷。但是要注意的是IDEA的社区免费版并不支持众多模板组键,这里还是需要下载终极版,正版的一年是4600刀,作为一名开发而言,还是比较贵的,所以还是用破解码吧(百度上破解码很多,在此不作说明)。而IDEA和Eclipse对项目管理有一个概念上的区别。Eclipse中有workspace这一概念,所有该工作空间的项目都会在其中显示。而IDEA的目录最高级是project,这对于使用Maven聚合工程的开发而言很不舒服,因为每个工程都需要新开一个窗口页面,也不利于开发。大家可以采用笔者的方法,新建一个空的workspace文件夹,将它作为一个空项目导入,以此作为项目的workspace。
导入这个空项目
在这里,要注意的是,虽然是一个Maven的工程,但是此时项目里没有pom.xml,因此项目特征并不是maven工程,因此将它作为一个常规项目导入就可以了。完成应该是这样一个干净的空项目。
右键workspace新建一个空的 maven
项目choerodon-todo-service
。
要注意的,这里的model并不是Maven项目中子项目的model的概念,你可以把它理解为workspace中的project。
由于是基于Boot进行开发,所以勾选Spring Initializr(如果是社区版,这个地方是没有这个模板选项的),下一步
填写项目信息
我们会发现,在你指定了模板了以后,IDEA自动生成了pom.xml,但是在这里要注意的是,系统默认的是Boot2,笔者还是推荐使用Boot1.5.3的version,这个版本比较稳定,因此需要修改一下pom文件
在此给出:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://maven.apache.org/POM/4.0.0"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<groupId>io.choerodon</groupId>
<artifactId>choerodon-todo-service</artifactId>
<version>1.0.0</version>
<!--choerodon-framework-parent dependency-->
<parent>
<groupId>io.choerodon</groupId>
<artifactId>choerodon-framework-parent</artifactId>
<version>0.6.0.RELEASE</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<!--choerodon-starters dependency-->
<properties>
<choerodon.starters.version>0.5.2.RELEASE</choerodon.starters.version>
</properties>
<dependencies>
<!--spring boot-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-undertow</artifactId>
</dependency>
<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-actuator</artifactId>
</dependency>
<!--spring cloud-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka</artifactId>
</dependency>
<!--choerodon-->
<dependency>
<groupId>io.choerodon</groupId>
<artifactId>choerodon-starter-core</artifactId>
<version>${choerodon.starters.version}</version>
</dependency>
<dependency>
<groupId>io.choerodon</groupId>
<artifactId>choerodon-starter-oauth-resource</artifactId>
<version>${choerodon.starters.version}</version>
</dependency>
<dependency>
<groupId>io.choerodon</groupId>
<artifactId>choerodon-starter-swagger</artifactId>
<version>${choerodon.starters.version}</version>
</dependency>
</dependencies>
<build>
<finalName>choerodon-todo-service</finalName>
</build>
</project>
根据子级模块所需jar包添加需要的依赖。
- (必须)choerodon-starter-core,核心工具包。提供了一些基础类用于开发过程中使用。以及主要帮助获取自定义的userDetail和一些通用的方法。
- (必须)choerodon-starter-oauth-resource,oauth资源服务工具包,主要提供了服务controller的异常统一捕获,并转换成用户语言对应的描述信息,以及配置了服务在接受请求时对jwt token的验证规则。
- choerodon-starter-mybatis-mapper,通用mapper和分页插件集成,扩展多语言、审计字段等功能。
修改默认配置文件
这里,系统自动生成了application.properties,这里还是推荐大家用yml,对于properties和yml的区别,可以参照properties和yml的区别一文。将原来的application.properties替换为application.yml
, bootstrap.yml
。
bootstrap.yml
: 存放不会通过环境变量替换和必须在bootstrap中指定的变量。包括项目端口,应用名,config-server
地址等。application.yml
: 存放项目的基础配置,包含数据库连接配置,kafka
配置,注册中心地址等,这些变量可以通过profile
或者环境变量修改。
此时,项目结构:
在此给出默认配置:
# bootstrap.yml
server:
port: 18080
spring:
application:
name: choerodon-todo-service
cloud:
config:
failFast: true
retry:
maxAttempts: 6
multiplier: 1.5
maxInterval: 2000
uri: localhost:8010
enabled: false
management:
port: 18081
security:
enabled: false
security:
basic:
enabled: false
# application.yml
eureka:
instance:
preferIpAddress: true
leaseRenewalIntervalInSeconds: 10
leaseExpirationDurationInSeconds: 30
metadata-map:
VERSION: v1
client:
serviceUrl:
defaultZone: ttp://localhost:8000/eureka/
registryFetchIntervalSeconds: 10
mybatis:
mapperLocations: classpath*:/mapper/*.xml
configuration: # 数据库下划线转驼峰配置
mapUnderscoreToCamelCase: true
修改TodoServiceApplication类
启动应用
快捷键Ctrl+Shift+F10或者点击启动键(个别会出现问题可以试试根目录下$ mvn clean spring-boot:run命令启动)
此时可以打开浏览器,在浏览器输入:http://localhost:18081/health
返回如下信息:
{
status: "UP",
diskSpace: {
status: "UP"
},
db: {
status: "UP",
database: "MySQL",
hello: 1
},
refreshScope: {
status: "UP"
},
hystrix: {
status: "UP"
}
}
在浏览器输入:http://localhost:18080/hello
,页面打印 hello world
。
这样,一个简单的spring boot
应用就已经搭建成功