• 介绍

    项目是基于 Spring bootmaven 项目,本章节介绍怎样创建基于HZERO平台的项目。

    1. 新建maven项目
    2. 添加项目依赖
    3. 添加默认配置文件

    创建maven项目

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

    $ mkdir -p hzero-todo-service
    $ cd hzero-todo-service
    

    添加项目依赖

    创建pom.xml 文件。

    $ touch pom.xml
    

    修改 pom.xml

    <?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">
        <modelVersion>4.0.0</modelVersion>
    
        <!--hzero-parent dependency-->
        <parent>
            <groupId>org.hzero</groupId>
            <artifactId>hzero-parent</artifactId>
            <version>1.2.0.RELEASE</version>
        </parent>
        <artifactId>hzero-todo-service</artifactId>
    
        <dependencies>
            <!--hzero-->
            <dependency>
                <groupId>org.hzero.starter</groupId>
                <artifactId>hzero-starter-redis</artifactId>
            </dependency>
            <dependency>
                <groupId>org.hzero.starter</groupId>
                <artifactId>hzero-starter-core</artifactId>
            </dependency>
    
            <!-- undertow -->
            <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>
            <!-- actuator -->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-actuator</artifactId>
            </dependency>
    
            <!-- config client -->
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-config-client</artifactId>
            </dependency>
            
            <!-- register client -->
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
            </dependency>
        </dependencies>
    
    	<repositories>
                <repository>
                <id>HzeroRelease</id>
                <name>Hzero-Release Repository</name>
                <url>http://nexus.saas.hand-china.com/content/repositories/Hzero-Release/</url>
                <snapshots>
                    <enabled>false</enabled>
                </snapshots>
            </repository>
            <repository>
                <id>HzeroSnapshot</id>
                <name>Hzero-Snapshot Repository</name>
                <url>http://nexus.saas.hand-china.com/content/repositories/Hzero-Snapshot/</url>
                <snapshots>
                    <enabled>true</enabled>
                </snapshots>
            </repository>
        </repositories>
    
    </project>
    

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

    更多 starter 的依赖可以参考 hzero-starters

    添加默认配置文件

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

    $ mkdir -p src/main/java
    $ mkdir -p src/main/resources
    

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

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

    $ cd src/main/resources
    $ touch application.yml
    $ touch bootstrap.yml
    

    .1 bootstrap.yml

    server:
      # 服务端口
      port: 8088
    management:
      server:
        # 监控管理端口
        port: 8089
      endpoints:
        web:
          exposure:
            # 需要开放的 Actuator 监控端点,默认开放所有
            include: '*'
    
    spring:
      application:
        name: hzero-todo-service
      profiles:
        active: ${SPRING_PROFILES_ACTIVE:default}
      cloud:
        config:
          fail-fast: false
          # 是否启用配置中心
          enabled: ${SPRING_CLOUD_CONFIG_ENABLED:false}
          # 配置中心地址
          uri: ${SPRING_CLOUD_CONFIG_URI:http://dev.hzero.org:8010}
          retry:
            # 最大重试次数
            maxAttempts: 6
            multiplier: 1.1
            # 重试间隔时间
            maxInterval: 2000
          # 标签
          label: ${SPRING_CLOUD_CONFIG_LABEL:}
        inetutils:
          # 本地多网卡时,忽略回环网卡
          ignored-interfaces[0]: lo
          # 本地多网卡时,选择注册的网段
          preferred-networks[0]: 192.168
    

    .2 application.yml

    # 日志配置
    logging:
      level:
        org.hzero: ${LOG_LEVEL:debug}
        org.apache.ibatis: ${LOG_LEVEL:debug}
        io.choerodon: ${LOG_LEVEL:debug}
    

    编写TodoApplication类

    src/main/java中创建TodoApplication,在项目根目录下执行如下命名:

    $ mkdir -p src/main/java/org/hzero/todo
    $ touch src/main/java/org/hzero/todo/TodoApplication.java
    

    添加main 函数。

    package org.hzero.todo;
    
    import io.swagger.annotations.ApiOperation;
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.http.HttpStatus;
    import org.springframework.http.ResponseEntity;
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.RestController;
    
    import io.choerodon.core.iam.ResourceLevel;
    import io.choerodon.resource.annoation.EnableChoerodonResourceServer;
    import io.choerodon.swagger.annotation.Permission;
    
    @SpringBootApplication
    @RestController
    // @EnableChoerodonResourceServer 用于开启资源认证、关闭 Security 安全认证
    @EnableChoerodonResourceServer
    public class TodoApplication {
    
        public static void main(String[] args) {
            SpringApplication.run(TodoApplication.class, args);
        }
    
        @GetMapping
        @Permission(level = ResourceLevel.SITE, permissionPublic = true)
        @ApiOperation(value = "demo")
        public ResponseEntity<String> hello() {
            return new ResponseEntity<>("hello hzero!", HttpStatus.OK);
        }
    }
    

    启动应用

    项目根目录下执行命令。

    $ mvn clean spring-boot:run
    

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

    Started TodoApplication in 14.189 seconds (JVM running for 14.942)
    

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

    返回如下信息:

    {
      status: "UP"
    }
    

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

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