SpringCloud 项目构建

发布时间 2023-08-14 21:46:10作者: 江南烟雨行舟

使用的是 Alibaba 的,所以需要确定版本:

直接创建 SpringBoot 项目,然后改成父项目,做模块化开发:

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.6.11</version>
    <relativePath/>
</parent>

<packaging>pom</packaging>

<name>项目名</name>
<description>描述</description>

<properties>
    <java.version>1.8</java.version>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        
    <spring-cloud.version>2021.0.4</spring-cloud.version>
    <spring-cloud-alibaba-version>2021.0.4.0</spring-cloud-alibaba-version>
</properties>

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-dependencies</artifactId>
            <version>${spring-cloud.version}</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-alibaba-dependencies</artifactId>
            <version>${spring-cloud-alibaba-version}</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>


<dependencies>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-bootstrap</artifactId>
    </dependency>
   
    <!-- 工具类 -->
    
    <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-collections4</artifactId>
        <version>4.4</version>
    </dependency>
    <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-lang3</artifactId>
    </dependency>
</dependencies>


<!-- 配置为阿里的仓库 -->
<repositories>
    <repository>
        <id>public</id>
        <name>aliyun nexus</name>
        <url>https://maven.aliyun.com/repository/public</url>
        <releases>
            <enabled>true</enabled>
        </releases>
    </repository>
</repositories>

<pluginRepositories>
    <pluginRepository>
        <id>public</id>
        <name>aliyun nexus</name>
        <url>https://maven.aliyun.com/repository/public</url>
        <releases>
            <enabled>true</enabled>
        </releases>
        <snapshots>
            <enabled>false</enabled>
        </snapshots>
    </pluginRepository>
</pluginRepositories>

基本配置

application-dev.yml、application-druid.yml、application-prod.yml

# Spring配置
spring:
  profiles:
    active: dev
    include: druid

# 服务配置 4核8G
server:
  port: 8080
  servlet:
    context-path: /
  tomcat:
    uri-encoding: UTF-8
    accept-count: 1000
    max-connections: 10000
    threads:
      max: 800
      min-spare: 100

exceptionhandler

创建包 exceptionhandler

import org.springframework.http.converter.HttpMessageNotReadableException;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;

/**
 * 全局异常捕获
 *
 * @author ifeisier
 * @since 1.0.0
 */
@ControllerAdvice
public class CommonExceptionHandler {

    /**
     * 前端传递的参数类型不对, 导致 JSON 反序列化错误
     */
    @ExceptionHandler(HttpMessageNotReadableException.class)
    @ResponseBody
    public ? exceptionHandler(HttpMessageNotReadableException e) {
        return ?;
    }

}