spring-boot 集成fastjson

本文转自:https://blog.youkuaiyun.com/houyujie745839/article/details/72763432

 

spring boot 默认使用的json转换工具是jackson。

集成fastjson,引入fastjson的jar,版本1.2.10+

        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.15</version>
        </dependency>

配置fastjson有两种方式

第一种方式:
① 启动类继承 WebMvcConfigurerAdapter
②覆盖configureMessageConverters方法

@SpringBootApplication
public class App extends WebMvcConfigurerAdapter{

    @Override
    public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {

        //定义一个转换消息的对象
        FastJsonHttpMessageConverter fastConverter = new FastJsonHttpMessageConverter();

        //添加fastjson的配置信息 比如 :是否要格式化返回的json数据
        FastJsonConfig fastJsonConfig = new FastJsonConfig();

        fastJsonConfig.setSerializerFeatures(SerializerFeature.PrettyFormat);

        //在转换器中添加配置信息
        fastConverter.setFastJsonConfig(fastJsonConfig);

        //将转换器添加到converters中
        converters.add(fastConverter);
    }

第二种方式:
启动类注入Bean HttpMessageConverters

@Bean
    public HttpMessageConverters fastjsonHttpMessageConverter(){
        //定义一个转换消息的对象
        FastJsonHttpMessageConverter fastConverter = new FastJsonHttpMessageConverter();

        //添加fastjson的配置信息 比如 :是否要格式化返回的json数据
        FastJsonConfig fastJsonConfig = new FastJsonConfig();

        fastJsonConfig.setSerializerFeatures(SerializerFeature.PrettyFormat);

        //在转换器中添加配置信息
        fastConverter.setFastJsonConfig(fastJsonConfig);

        HttpMessageConverter<?> converter = fastConverter;

        return new HttpMessageConverters(converter);

    }

到此fastjson配置完毕。测试是否json是否使用fastjson可在实体类对象的任意属性加上@JSONField(serialize=false)返回前端的数据没有该属性,则配置成功

<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <parent> <artifactId>sky-take-out</artifactId> <groupId>com.sky</groupId> <version>1.0-SNAPSHOT</version> </parent> <modelVersion>4.0.0</modelVersion> <artifactId>sky-server</artifactId> <dependencies> <dependency> <groupId>com.sky</groupId> <artifactId>sky-common</artifactId> <version>1.0-SNAPSHOT</version> </dependency> <dependency> <groupId>com.sky</groupId> <artifactId>sky-pojo</artifactId> <version>1.0-SNAPSHOT</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <scope>compile</scope> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <scope>runtime</scope> </dependency> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid-spring-boot-starter</artifactId> </dependency> <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper-spring-boot-starter</artifactId> </dependency> <dependency> <groupId>org.aspectj</groupId> <artifactId>aspectjrt</artifactId> </dependency> <dependency> <groupId>org.aspectj</groupId> <artifactId>aspectjweaver</artifactId> </dependency> <dependency> <groupId>com.github.xiaoymin</groupId> <artifactId>knife4j-spring-boot-starter</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-cache</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-websocket</artifactId> </dependency> <dependency> <groupId>javax.xml.bind</groupId> <artifactId>jaxb-api</artifactId> </dependency> <!-- poi --> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> </dependency> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project> 这是我的pom.xml
03-14
<think>好的,我现在需要帮助用户分析他们提供的pom.xml文件。首先,我得仔细看一下这个XML的结构和内容,了解项目的依赖和配置。用户可能想知道这个文件的作用,或者是否有改进的地方,或者遇到了什么问题。 首先,我会检查项目的基本信息。这个项目属于一个父项目,artifactId是sky-take-out,groupId是com.sky,版本是1.0-SNAPSHOT。当前的模块是sky-server,这说明这可能是一个多模块项目,其中sky-server是子模块之一,可能还有其他模块比如sky-common和sky-pojo,这在依赖项里提到了。 接下来看依赖部分。用户添加了多个依赖,比如spring-boot-starter、spring-boot-starter-web、mybatis-spring-boot-starter,这些是典型的Spring Boot项目会用到的,说明这是一个基于Spring Boot的Web应用,可能还集成了MyBatis作为ORM框架。还有mysql-connector-java,说明使用MySQL数据库。druid的依赖表明使用了阿里的Druid连接池,这是常见的数据库连接池选择。 另外,用户还引入了lombok,这有助于减少样板代码。fastjson可能用于JSON处理,但需要注意版本是否有安全漏洞。pagehelper用于分页,knife4j是Swagger的增强工具,用于API文档。redis和cache的依赖说明项目可能用到了缓存机制,websocket则可能涉及实时通信功能。 看到poi的依赖,这可能用于处理Excel文件,比如导入导出功能。jaxb-api可能用于XML绑定,这在某些情况下需要,特别是在Java 9+中,因为部分模块被移除,可能需要额外添加。 构建部分使用了spring-boot-maven-plugin,这标准于Spring Boot应用的打包,尤其是生成可执行的jar包。 接下来,我需要考虑用户可能的疑问。用户可能想知道这些依赖是否正确,或者是否有遗漏,或者构建配置是否合理。例如,父项目是否管理了依赖版本,避免子模块版本冲突。检查到父项目sky-take-out应该定义了dependencyManagement来统一管理版本,所以子模块中的依赖如spring-boot-starter-web没有指定版本是正确的,因为父项目可能继承自Spring Boot的parent。 另外,检查是否有不必要的依赖,或者是否存在潜在的问题。例如,fastjson虽然流行,但存在一些历史漏洞,需要确认是否使用最新版本。此外,jaxb-api在Java 8之后可能需要显式引入,尤其是在使用更高版本的Java时,这点可能需要提醒用户注意。 关于插件部分,spring-boot-maven-plugin的配置是否正确,是否需要额外的配置项,比如指定主类等。不过通常默认配置已经足够,除非有特殊需求。 可能用户没有提到具体问题,但作为分析,应该指出关键点和可能的优化建议。比如依赖的作用,版本管理是否合理,以及是否有更佳实践。例如,是否使用Spring Boot的starter-parent来简化配置,或者是否所有依赖的版本都由父项目正确管理。 总结来说,用户可能希望了解这个pom.xml的结构是否合理,依赖是否恰当,或者是否存在潜在问题。因此,在回答中需要分点解释各个部分的作用,指出关键依赖的用途,并给出可能的建议,比如检查fastjson版本,确认Java版本兼容性等。同时,确保用户理解多模块项目的结构,以及父项目在管理依赖版本中的角色。</think>这个`pom.xml`是一个典型的Spring Boot多模块项目的构建配置文件,以下是分步解析: --- ### 一、项目基本信息 ```xml <parent> <artifactId>sky-take-out</artifactId> <groupId>com.sky</groupId> <version>1.0-SNAPSHOT</version> </parent> <modelVersion>4.0.0</modelVersion> <artifactId>sky-server</artifactId> ``` - **多模块项目结构**:继承自父模块`sky-take-out`,当前子模块为`sky-server` - **版本管理**:版本号`1.0-SNAPSHOT`表示开发中版本 --- ### 二、关键依赖分析 #### 1. 内部模块依赖 ```xml <dependency> <groupId>com.sky</groupId> <artifactId>sky-common</artifactId> <version>1.0-SNAPSHOT</version> </dependency> <dependency> <groupId>com.sky</groupId> <artifactId>sky-pojo</artifactId> <version>1.0-SNAPSHOT</version> </dependency> ``` - `sky-common`: 公共工具类模块 - `sky-pojo`: 数据模型/实体类模块 --- #### 2. Spring Boot 核心依赖 ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <scope>compile</scope> </dependency> ``` - 包含Web开发所需组件(Tomcat + Spring MVC) - `spring-boot-starter-test`提供单元测试支持 --- #### 3. 数据持久层 ```xml <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <scope>runtime</scope> </dependency> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> </dependency> ``` - MySQL驱动 + MyBatis整合 - `druid-spring-boot-starter`提供数据库连接池 --- #### 4. 实用工具 ```xml <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> </dependency> ``` - **Lombok**:自动生成Getter/Setter等代码 - **Fastjson**:阿里巴巴的JSON处理库(需注意版本安全性) --- #### 5. 其他功能扩展 ```xml <dependency> <groupId>com.github.xiaoymin</groupId> <artifactId>knife4j-spring-boot-starter</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> </dependency> ``` - **Knife4j**:Swagger API文档增强工具 - **Redis**:缓存支持 - **POI**:Excel文件操作 --- ### 三、构建配置 ```xml <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> ``` - 使用Spring Boot Maven插件打包可执行JAR --- ### 四、潜在优化建议 1. **依赖版本管理**:建议在父pom中通过`<dependencyManagement>`统一管理版本号 2. **Fastjson安全**:建议检查是否使用最新安全版本(推荐使用Jackson替代) 3. **Java版本适配**:`jaxb-api`在Java 11+需要显式引入,需确认JDK版本匹配 这个配置适合构建一个包含Web服务、数据持久化、缓存、文档生成等功能的分布式系统后端模块。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值