首页 > 其他分享 >Hzero教程:创建基于hzero的springboot单体maven项目完整步骤

Hzero教程:创建基于hzero的springboot单体maven项目完整步骤

时间:2023-12-25 10:33:40浏览次数:32  
标签:Hzero springboot boot springframework maven org hzero yml starter


创建项目

更新时间:2023-12-01 15:38:30

介绍

项目是基于 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包添加需要的依赖。

  • (必须)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.com.cn: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 应用就已经搭建成功。


标签:Hzero,springboot,boot,springframework,maven,org,hzero,yml,starter
From: https://blog.51cto.com/zhangxueliang/8963980

相关文章

  • 4、SpringBoot2之整合SpringMVC
    创建名为springboot_springmvc的新module,过程参考3.1节4.1、重要的配置参数在springboot中,提供了许多和web相关的配置参数(详见官方文档),其中有三个比较重要:4.1.1、server.port该配置参数用于设置web应用程序的服务端口号,默认值为80804.1.2、server.servlet.cont......
  • Maven 知识点
    目录Maven[1]1.基础知识1.1.Maven相关目录、文件1.1.1.setting.xml文件设置1.2.POM示例1.3.基础设置2.坐标和依赖2.1.坐标2.2.依赖2.2.1.依赖范围2.2.2.传递性依赖2.2.3.优化依赖3.生命周期和插件3.1.生命周期3.2.插件3.2.1.绑定生命周期阶段3.2.2.插件设置4.仓库4.1.本地仓库4......
  • 启用阿里云maven仓库
     中央仓库:repo1.maven.org很难访问,于是改用阿里云的备用仓库参考:IDEA这么设置Maven,再也不用担心依赖下载失败了-知乎(zhihu.com)Maven安装与配置国内源-知乎(zhihu.com)我改动maven安装目录下/conf/setting.xml,加上一个mirror配置,如下:<mirror><id>aliyunmaven......
  • 基于SpringBoot+Vue的文理医院预约挂号系统设计实现(源码+lw+部署文档+讲解等)
    (文章目录)前言:heartpulse:博主介绍:✌全网粉丝10W+,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战✌:heartpulse:......
  • Springboot下PageHelper分页不生效问题
    今天在做一个小项目,引入PageHelper时踩了一个坑,记录一下。解决方案参考:SpringBoot+MyBatis使用pagehelper分页插件及其注意事项(含解决分页不生效问题)环境:SpringBoot3.2.0JDK17Postgresql15PageHelper1.2.12依赖<dependency><groupId>com.github.pagehelper</......
  • springboot_3.2_freemark_基础环境配置
    springboot_3.2_freemark_基础环境配置一、前言二、环境三、相关资料四、目标五、默认配置项六、构建springboot3.2项目6.1pom.xml内容:6.2启动类6.3添加ftlh模板6.4controller内容6.5bootstrap.yml配置七、总结一、前言FreeMarker是一款模板引擎:即一种基于模板和要改变的......
  • springboot1.x升级到springboot3.x中遇到的问题总结
    springboot1.x升级到springboot3.x中遇到的问题总结springboot1.x升级到springboot3.x中遇到的问题总结前言问题:无法创建DataSource的bean对象,提示url或driverclass未配置问题:引入freemark后页面总是报404问题:bootstrap.yml不生效,配置中的内容无法读取springboot1.x升级到spring......
  • MapStruct+Maven+Lombok问题NoSuchBeanDefinitionException、does not have an access
    概述先直接说我遇到的问题吧,SpringBoot应用启动失败:ERROR|org.springframework.boot.web.embedded.tomcat.TomcatStarter|onStartup|61|-ErrorstartingTomcatcontext.Exception:org.springframework.beans.factory.UnsatisfiedDependencyException.Message:Error......
  • SpringBoot系列---【过滤器Filter和拦截器HandlerInterceptor的区别和用法】
    1.作用时机1.1过滤器过滤器(Filter)主要作用在请求到达Servlet或JSP之前,对请求进行预处理,可以对HTTP请求进行过滤、修改。过滤器是基于回调函数实现的,开发人员通过重写doFilter()方法实现过滤逻辑,其主要功能有:权限验证:检查用户是否已经登录或者是否具有相应的权限。数据压......
  • 【Java】Spring、SpringBoot、SpringCloud理解和入门
    关于Spring、SpringBoot、SpringCloud我总结了几点。Spring是轻量级的容器框架,目前大多数项目不直接使用Spring的。SpringBoot是Spring的升级版,主要应用单个微服务,关联性小的项目、规模小、硬件要求不高的项目。SpringCloud基于SpringBoot来实现微服务开发组件。主要应用于规......