• 介绍
  • 创建maven项目
  • 添加项目依赖
  • 添加默认配置文件
  • 编写TodoServiceApplication类
  • 启动应用

    介绍

    项目是基于 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: 存放项目的基础配置,包含默认的线上数据库连接配置,注册中心地址等,这些变量可以通过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 应用就已经搭建成功。