介绍

项目是基于 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.11.0.RELEASE</version>
  13. </parent>
  14. <modelVersion>4.0.0</modelVersion>
  15. <!--choerodon-starters dependency-->
  16. <properties>
  17. <choerodon.starters.version>0.11.0.RELEASE</choerodon.starters.version>
  18. <choerodon.serviceBuild>true</choerodon.serviceBuild>
  19. <choerodon.mainClass>io.choerodon.todo.TodoServiceApplication</choerodon.mainClass>
  20. </properties>
  21. <dependencies>
  22. <!--spring boot-->
  23. <dependency>
  24. <groupId>org.springframework.boot</groupId>
  25. <artifactId>spring-boot-starter-undertow</artifactId>
  26. </dependency>
  27. <dependency>
  28. <groupId>org.springframework.boot</groupId>
  29. <artifactId>spring-boot-starter-web</artifactId>
  30. <exclusions>
  31. <exclusion>
  32. <groupId>org.springframework.boot</groupId>
  33. <artifactId>spring-boot-starter-tomcat</artifactId>
  34. </exclusion>
  35. </exclusions>
  36. </dependency>
  37. <dependency>
  38. <groupId>org.springframework.boot</groupId>
  39. <artifactId>spring-boot-starter-actuator</artifactId>
  40. </dependency>
  41. <!-- 允许注册到注册中心时,添加此依赖 -->
  42. <!-- &lt;!&ndash;spring cloud&ndash;&gt;-->
  43. <!-- <dependency>-->
  44. <!-- <groupId>org.springframework.cloud</groupId>-->
  45. <!-- <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>-->
  46. <!-- </dependency>-->
  47. <!--choerodon-->
  48. <dependency>
  49. <groupId>io.choerodon</groupId>
  50. <artifactId>choerodon-starter-core</artifactId>
  51. <version>${choerodon.starters.version}</version>
  52. </dependency>
  53. <dependency>
  54. <groupId>io.choerodon</groupId>
  55. <artifactId>choerodon-starter-oauth-resource</artifactId>
  56. <version>${choerodon.starters.version}</version>
  57. </dependency>
  58. <dependency>
  59. <groupId>io.choerodon</groupId>
  60. <artifactId>choerodon-starter-swagger</artifactId>
  61. <version>${choerodon.starters.version}</version>
  62. </dependency>
  63. <!-- 配置文件中添加数据库配置后,添加以下依赖 -->
  64. <!-- <dependency>-->
  65. <!-- <groupId>io.choerodon</groupId>-->
  66. <!-- <artifactId>choerodon-starter-mybatis</artifactId>-->
  67. <!-- <version>${choerodon.starters.version}</version>-->
  68. <!-- </dependency>-->
  69. <!--other dependencies-->
  70. <!-- <dependency>-->
  71. <!-- <groupId>mysql</groupId>-->
  72. <!-- <artifactId>mysql-connector-java</artifactId>-->
  73. <!-- </dependency>-->
  74. <!-- 添加cpu监控 -->
  75. <dependency>
  76. <groupId>io.choerodon</groupId>
  77. <artifactId>choerodon-starter-metric</artifactId>
  78. <version>${choerodon.starters.version}</version>
  79. </dependency>
  80. <!-- Test Dependencies -->
  81. <dependency>
  82. <groupId>org.springframework.boot</groupId>
  83. <artifactId>spring-boot-starter-test</artifactId>
  84. <scope>test</scope>
  85. </dependency>
  86. <dependency>
  87. <groupId>io.choerodon</groupId>
  88. <artifactId>choerodon-liquibase</artifactId>
  89. <version>${choerodon.starters.version}</version>
  90. <scope>test</scope>
  91. </dependency>
  92. <dependency>
  93. <groupId>com.h2database</groupId>
  94. <artifactId>h2</artifactId>
  95. <version>1.4.197</version>
  96. <scope>test</scope>
  97. </dependency>
  98. <dependency>
  99. <groupId>org.spockframework</groupId>
  100. <artifactId>spock-core</artifactId>
  101. <version>1.1-groovy-2.4-rc-2</version>
  102. <scope>test</scope>
  103. </dependency>
  104. <dependency>
  105. <groupId>org.spockframework</groupId>
  106. <artifactId>spock-spring</artifactId>
  107. <version>1.1-groovy-2.4-rc-3</version>
  108. <scope>test</scope>
  109. </dependency>
  110. </dependencies>
  111. <build>
  112. <finalName>choerodon-todo-service</finalName>
  113. </build>
  114. </project>

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

  • (必须)choerodon-starter-core,核心工具包。提供了一些基础类用于开发过程中使用。以及主要帮助获取自定义的 userDetail 和一些通用的方法。
  • (必须)choerodon-starter-oauth-resource,oauth资源服务工具包,主要提供了服务controller 的异常统一捕获,并转换成用户语言对应的描述信息,以及配置了服务在接受请求时对jwt token的验证规则。更多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: 28080
  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. server:
  18. port: 28081
  19. endpoints:
  20. web:
  21. exposure:
  22. include: '*'
  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: ${EUREKA_DEFAULT_ZONE: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 io.choerodon.base.annotation.Permission;
  3. import io.choerodon.resource.annoation.EnableChoerodonResourceServer;
  4. import io.swagger.annotations.ApiOperation;
  5. import org.springframework.boot.SpringApplication;
  6. import org.springframework.boot.autoconfigure.SpringBootApplication;
  7. import org.springframework.http.HttpStatus;
  8. import org.springframework.http.ResponseEntity;
  9. import org.springframework.web.bind.annotation.GetMapping;
  10. import org.springframework.web.bind.annotation.RestController;
  11. @SpringBootApplication
  12. // 是否允许注册到注册中心,暂时注释掉
  13. //@EnableEurekaClient
  14. // 是否开启猪齿鱼资源服务器
  15. @EnableChoerodonResourceServer
  16. @RestController
  17. public class TodoServiceApplication {
  18. public static void main(String[] args) {
  19. SpringApplication.run(TodoServiceApplication.class, args);
  20. }
  21. @GetMapping
  22. @Permission(permissionPublic = true)
  23. @ApiOperation(value = "demo")
  24. public ResponseEntity<String> hello() {
  25. return new ResponseEntity<String>("hello world.", HttpStatus.OK);
  26. }
  27. }

启动应用

项目根目录下执行命令。

  1. $ mvn clean spring-boot:run

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

  1. Started TodoServiceApplication in 8.3 seconds (JVM running for 13.342)

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

返回如下信息:

  1. {"status":"UP"}

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

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