Skip to content

common-web-starter

1.功能介绍

1.JacksonConfig 提供对日期类型的序列化支持

  • 配置 Jackson 的 ObjectMapper 来为 Date 类型指定自定义的序列化和反序列化格式。这样,前后端可以统一日期格式。

2.修饰SpringMVC 中的请求处理适配器

  • 通过自定义注解 IgnoredResultWrapper 和装饰器模式对 SpringMVC 中的请求处理适配器进行扩展,控制响应结果的包装及处理方式。

3.将前台传进的多种日期格式自动反序列化为 Date 类型

  • 使用 @InitBinder 来解析来自前端的多种日期格式,确保它们能正确反序列化为 Date 类型。

2.配置示例

配置 Maven 来打包项目时,指定 .jar 文件的名称为项目的 artifactIdversion,并使用 spring-boot-maven-plugin 插件来打包所有依赖。

xml
<!-- Maven 打包常规配置 -->
<build>
    <!-- 打包成 jar 包时的名字为项目的 artifactId + version -->
    <finalName>${project.artifactId}-${project.version}</finalName>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <version>2.4.2</version>
            <executions>
                <execution>
                    <goals>
                        <!-- 将所有的依赖包都打到这个模块中 -->
                        <goal>repackage</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

3.案例演示

1.创建模块

CleanShot 2025-01-19 at 13.36.45@2x

2.目录结构

CleanShot 2025-01-19 at 13.51.28@2x

3.pom.xml

1.引入依赖

xml
    <dependencies>
        <!-- common-web-starter -->
        <dependency>
            <groupId>cn.sunxiansheng</groupId>
            <artifactId>common-web-starter</artifactId>
        </dependency>

        <!-- common-log4j2-starter 是必须引入的!!! -->
        <dependency>
            <groupId>cn.sunxiansheng</groupId>
            <artifactId>common-log4j2-starter</artifactId>
        </dependency>
    </dependencies>

2.打包配置

xml
    <!-- maven 打包常规配置 -->
<build>
    <!-- 打包成 jar 包时的名字为项目的artifactId + version -->
    <finalName>${project.artifactId}-${project.version}</finalName>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <version>2.4.2</version>
            <executions>
                <execution>
                    <goals>
                        <!-- 将所有的依赖包都打到这个模块中 -->
                        <goal>repackage</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

4.application.yml 配置日志根目录

yaml
sun-rays:
  log4j2:
    home: /Users/sunxiansheng/IdeaProjects/sunrays-framework-demo/common-web-starter-demo/logs # 日志根目录(默认./logs)

5.WebController.java 测试三种Web响应方式

java
package cn.sunxiansheng.web.controller;

import cn.sunxiansheng.tool.response.ResultWrapper;
import cn.sunxiansheng.web.annotation.IgnoredResultWrapper;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * Description: WebController
 *
 * @Author sun
 * @Create 2025/1/19 13:39
 * @Version 1.0
 */
@RestController
public class WebController {

    /**
     * 第一种方式:直接使用自动包装成功结果
     *
     * @return
     */
    @RequestMapping("/method1")
    public String method1() {
        return "method1";
    }

    /**
     * 第二种方式:使用 @IgnoredResultWrapper注解忽略掉自动包装
     *
     * @return
     */
    @IgnoredResultWrapper
    @RequestMapping("/method2")
    public String method2() {
        return "method2";
    }

    /**
     * 第三种方式:直接使用ResultWrapper来自己封装结果
     *
     * @return
     */
    @RequestMapping("/method3")
    public ResultWrapper<String> method3() {
        return ResultWrapper.fail("method3");
    }
}

6.WebApplication.java 启动类

java
package cn.sunxiansheng.web;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

/**
 * Description: WebApplication
 *
 * @Author sun
 * @Create 2025/1/19 13:39
 * @Version 1.0
 */
@SpringBootApplication
public class WebApplication {

    public static void main(String[] args) {
        SpringApplication.run(WebApplication.class, args);
    }
}

7.测试

1.第一种方式:直接使用自动包装成功结果

CleanShot 2025-01-19 at 13.55.25@2x

2.第二种方式:使用 @IgnoredResultWrapper注解忽略掉自动包装

CleanShot 2025-01-19 at 13.55.48@2x

3.第三种方式:直接使用ResultWrapper来自己封装结果

CleanShot 2025-01-19 at 13.56.10@2x

4.测试打包功能 clean install

CleanShot 2025-01-19 at 13.56.58@2x

CleanShot 2025-01-19 at 13.57.14@2x