介绍
项目是基于 Spring boot
的 maven
项目,本章节介绍怎样创建基于HZERO平台的项目。
- 新建maven项目
- 添加项目依赖
- 添加默认配置文件
创建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包添加需要的依赖。
- (必须)hzero-starter-core:核心工具包,提供了基础支持类、消息工具、Redis工具、及其他一些通用工具、常量封装等。
- hzero-starter-mybatis-mapper,通用 mapper 和分页插件集成,扩展多语言、审计字段等功能。
更多 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
-
bootstrap.yml
: 配置不会通过环境变量替换和必须在bootstrap中指定的变量。包括项目端口,应用名,hzero-config
地址等。 -
application.yml
: 配置项目的应用程序配置,包含默认的线上数据库连接配置,注册中心地址等,这些变量可以通过profile
或者环境变量修改。 -
二者区别:
bootstrap.yml
在程序引导时执行,应用于更加早期配置信息读取,如可以配置application.yml中使用到参数。application.yml
是应用程序特有配置信息,可以用来配置后续各个模块中需使用的公共参数等。bootstrap.yml 先于 application.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
应用就已经搭建成功。