介绍

项目是基于 Spring bootmaven 项目。

  • 新建maven项目
  • 添加项目依赖
  • 添加默认配置文件

创建maven项目

本地新建一个空的 maven 项目choerodon-todo-service

  1. $ mkdir -p choerodon-todo-service
  2. $ cd choerodon-todo-service

添加项目依赖

创建pom.xml 文件。

  1. $ touch pom.xml

修改pom.xml

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  3. xmlns="http://maven.apache.org/POM/4.0.0"
  4. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  5. <groupId>io.choerodon</groupId>
  6. <artifactId>choerodon-todo-service</artifactId>
  7. <version>1.0.0</version>
  8. <!--choerodon-framework-parent dependency-->
  9. <parent>
  10. <groupId>io.choerodon</groupId>
  11. <artifactId>choerodon-framework-parent</artifactId>
  12. <version>0.8.0.RELEASE</version>
  13. </parent>
  14. <modelVersion>4.0.0</modelVersion>
  15. <!--choerodon-starters dependency-->
  16. <properties>
  17. <choerodon.starters.version>0.7.0.RELEASE</choerodon.starters.version>
  18. </properties>
  19. <dependencies>
  20. <!--spring boot-->
  21. <dependency>
  22. <groupId>org.springframework.boot</groupId>
  23. <artifactId>spring-boot-starter-undertow</artifactId>
  24. </dependency>
  25. <dependency>
  26. <groupId>org.springframework.boot</groupId>
  27. <artifactId>spring-boot-starter-web</artifactId>
  28. <exclusions>
  29. <exclusion>
  30. <groupId>org.springframework.boot</groupId>
  31. <artifactId>spring-boot-starter-tomcat</artifactId>
  32. </exclusion>
  33. </exclusions>
  34. </dependency>
  35. <dependency>
  36. <groupId>org.springframework.boot</groupId>
  37. <artifactId>spring-boot-starter-actuator</artifactId>
  38. </dependency>
  39. <!--spring cloud-->
  40. <dependency>
  41. <groupId>org.springframework.cloud</groupId>
  42. <artifactId>spring-cloud-starter-eureka</artifactId>
  43. </dependency>
  44. <!--choerodon-->
  45. <dependency>
  46. <groupId>io.choerodon</groupId>
  47. <artifactId>choerodon-starter-core</artifactId>
  48. <version>${choerodon.starters.version}</version>
  49. </dependency>
  50. <dependency>
  51. <groupId>io.choerodon</groupId>
  52. <artifactId>choerodon-starter-oauth-resource</artifactId>
  53. <version>${choerodon.starters.version}</version>
  54. </dependency>
  55. <dependency>
  56. <groupId>io.choerodon</groupId>
  57. <artifactId>choerodon-starter-swagger</artifactId>
  58. <version>${choerodon.starters.version}</version>
  59. </dependency>
  60. </dependencies>
  61. <build>
  62. <finalName>choerodon-todo-service</finalName>
  63. </build>
  64. </project>

根据子级模块所需jar包添加需要的依赖。

  • (必须)choerodon-starter-core,核心工具包。提供了一些基础类用于开发过程中使用。以及主要帮助获取自定义的 userDetail 和一些通用的方法。
  • (必须)choerodon-starter-oauth-resource,oauth资源服务工具包,主要提供了服务controller 的异常统一捕获,并转换成用户语言对应的描述信息,以及配置了服务在接受请求时对jwt token的验证规则。
  • choerodon-starter-mybatis-mapper,通用mapper和分页插件集成,扩展多语言、审计字段等功能。
    更多choerodon-starter的依赖可以参考choerodon-starters

添加默认配置文件

在根目录下创建源码文件夹和资源文件夹。

  1. $ mkdir -p src/main/java
  2. $ mkdir -p src/main/resources

项目采用spring boot 进行管理。需要在子项目中配置默认的配置项。

resource文件夹中创建 application.yml, bootstrap.yml

  1. $ cd src/main/resources
  2. $ touch application.yml
  3. $ touch bootstrap.yml
  • bootstrap.yml: 存放不会通过环境变量替换和必须在bootstrap中指定的变量。包括项目端口,应用名,config-server地址等。
  • application.yml: 存放项目的基础配置,包含默认的线上数据库连接配置,kafka配置,注册中心地址等,这些变量可以通过profile或者环境变量修改。
  • application-default.yml: 本地开发配置文件,需要将该文件添加到.gitignore。包含本地一些差异化的配置,如数据库连接配置,注册中心地址等。
  1. # bootstrap.yml
  2. server:
  3. port: 18080
  4. spring:
  5. application:
  6. name: choerodon-todo-service
  7. cloud:
  8. config:
  9. failFast: true
  10. retry:
  11. maxAttempts: 6
  12. multiplier: 1.5
  13. maxInterval: 2000
  14. uri: localhost:8010
  15. enabled: false
  16. management:
  17. port: 18081
  18. security:
  19. enabled: false
  20. security:
  21. basic:
  22. enabled: false
  1. # application.yml
  2. eureka:
  3. instance:
  4. preferIpAddress: true
  5. leaseRenewalIntervalInSeconds: 10
  6. leaseExpirationDurationInSeconds: 30
  7. metadata-map:
  8. VERSION: v1
  9. client:
  10. serviceUrl:
  11. defaultZone: http://localhost:8000/eureka/
  12. registryFetchIntervalSeconds: 10
  13. mybatis:
  14. mapperLocations: classpath*:/mapper/*.xml
  15. configuration: # 数据库下划线转驼峰配置
  16. mapUnderscoreToCamelCase: true

编写TodoServiceApplication类

src/main/java中创建TodoServiceApplication。

  1. $ mkdir -p src/main/java/io/choerodon/todo
  2. $ touch src/main/java/io/choerodon/todo/TodoServiceApplication.java

添加main 函数。

  1. package io.choerodon.todo;
  2. import org.springframework.boot.SpringApplication;
  3. import org.springframework.boot.autoconfigure.SpringBootApplication;
  4. import org.springframework.web.bind.annotation.GetMapping;
  5. import org.springframework.web.bind.annotation.RestController;
  6. import io.choerodon.resource.annoation.EnableChoerodonResourceServer;
  7. @SpringBootApplication
  8. // 是否允许注册到注册中心,暂时注释掉
  9. //@EnableEurekaClient
  10. @RestController
  11. // 是否开启猪齿鱼资源服务器
  12. // @EnableChoerodonResourceServer
  13. public class TodoServiceApplication {
  14. public static void main(String[] args) {
  15. SpringApplication.run(TodoServiceApplication.class, args);
  16. }
  17. @GetMapping
  18. @Permission(level = ResourceLevel.SITE, permissionPublic = true)
  19. @ApiOperation(value = "demo")
  20. public ResponseEntity<String> hello() {
  21. return new ResponseEntity<String>("hello world", HttpStatus.OK);
  22. }
  23. }

启动应用

项目根目录下执行命令。

  1. $ mvn clean spring-boot:run

控制台打印出如下信息,则表示启动成功。

  1. Started TodoServiceApplication in 20.651 seconds (JVM running for 24.976)

此时可以打开浏览器,在浏览器输入:http://localhost:18081/health

返回如下信息:

  1. {
  2. status: "UP",
  3. diskSpace: {
  4. status: "UP"
  5. },
  6. db: {
  7. status: "UP",
  8. database: "MySQL",
  9. hello: 1
  10. },
  11. refreshScope: {
  12. status: "UP"
  13. },
  14. hystrix: {
  15. status: "UP"
  16. }
  17. }

在浏览器输入:http://localhost:18080/hello,页面打印 hello world

这样,一个简单的Spring boot 应用就已经搭建成功。