springboot中的jackson与fastjson

Jackson的使用

FastJSON与Jackson比较

jackson的性能稍好,但FastJSON提供了很多静态方法,调用方便些。

设置springboot,使用fastjson进行json解析

启动类这样写即可:

@SpringBootApplication  
public class ApiCoreApp {  
   
    @Bean  
    public HttpMessageConverters fastJsonHttpMessageConverters() {  
       FastJsonHttpMessageConverter fastConverter = new FastJsonHttpMessageConverter();  
       FastJsonConfig fastJsonConfig = new FastJsonConfig();  
       fastJsonConfig.setSerializerFeatures(SerializerFeature.PrettyFormat);  
       fastConverter.setFastJsonConfig(fastJsonConfig);  
       HttpMessageConverter<?> converter = fastConverter;  
       return new HttpMessageConverters(converter);  
    }  
   
    public static void main(String[] args) {  
       SpringApplication.run(ApiCoreApp.class, args);  
    }  
}  

详见https://412887952-qq-com.iteye.com/blog/2315202

不设置maven插件

打的包即和本地仓库里下的依赖包一样,只有源码,没有依赖

依赖打入jar包中

如果是springboot项目,添加spring-boot-maven-plugin插件,即可将全部依赖打入BOOT-INFlib下。
如果加入include标签,可指定加入部分依赖,甚至空的lib包

<configuration>
                    <includes>
                        <include>
                            <groupId>org.freemarker</groupId>
                            <artifactId>freemarker</artifactId>
                        </include>
                    </includes>
                </configuration>

ps:使用maven打包把原源码也打包到jar中使用maven-assembly-plugin

将依赖包拷贝到target/lib目录下

方式一:使用该命令mvn clean dependency:copy-dependencies -DoutputDirectory=target/lib package -f pom.xml

方式二:使用maven dependency插件,配置如下:

 <!--将依赖的资源全部打入lib目录-->
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-dependency-plugin</artifactId>
            <configuration>
                <outputDirectory>${project.build.directory}/lib</outputDirectory>
                <excludeTransitive>false</excludeTransitive>
                <stripVersion>false</stripVersion>
            </configuration>
            <executions>
                <execution>
                    <id>copy-dependencies</id>
                    <phase>package</phase>
                    <goals>
                        <goal>copy-dependencies</goal>
                    </goals>
                    <configuration>
                        <outputDirectory>${project.build.directory}/lib</outputDirectory>
                        <excludeTransitive>false</excludeTransitive>
                        <stripVersion>false</stripVersion>
                    </configuration>
                </execution>
            </executions>
        </plugin>

问题:依赖包放到指定位置了,但jar在启动时需要手动指定 -Dloader.path=./lib
因为MANIFEST.MF 文件里并没有相关信息,如下:

Manifest-Version: 1.0
Archiver-Version: Plexus Archiver
Built-By: zcAsus
Created-By: Apache Maven 3.3.9
Build-Jdk: 1.8.0_181

解决方式,使用maven-jar-plugin插件,配置如下:

 <!--打包插件,在Jar包中添加Class-Path和Main-Class-->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <version>3.0.2</version>
                <configuration>
                    <archive>
                        <!--使用自己的Manifest文件,运行正常-->
                        <!--<manifestFile>src/main/resources/META-INF/MANIFEST.MF</manifestFile>-->
                        <!--使用插件添加的Manifest文件,运行正常,一定要注意Manifest中jar包名称和lib文件夹下jar包名称版本号后缀等一定要一致,否则找不到依赖jar,此处有坑-->
                        <manifest>
                            <addClasspath>true</addClasspath>
                            <!--指定依赖资源路径前缀-->
                            <classpathPrefix>lib/</classpathPrefix>
                            <mainClass>com.cashew.Test1BasicDesignMode.singleMode.byEnum.T3Test00</mainClass>
                        </manifest>
                        <!--可以把依赖本地系统的Jar包加入Manifest文件中-->
                        <manifestEntries>
                            <Class-Path>lib/lucene-1.0.0-SNAPSHORT.jar</Class-Path>
                        </manifestEntries>
                    </archive>
                </configuration>
            </plugin>

再次打包,MANIFEST.MF文件如下:

Manifest-Version: 1.0
Built-By: zcAsus
Class-Path: lib/junit-4.12.jar lib/hamcrest-core-1.3.jar lib/mysql-con
 nector-java-8.0.16.jar lib/protobuf-java-3.6.1.jar lib/commons-lang3-
 3.4.jar lib/slf4j-log4j12-1.7.12.jar lib/slf4j-api-1.7.12.jar lib/log
 4j-1.2.17.jar lib/apache-log4j-extras-1.2.17.jar lib/logback-core-1.1
 .7.jar lib/logback-classic-1.1.7.jar lib/json-lib-2.4-jdk15.jar lib/c
 ommons-beanutils-1.8.0.jar lib/commons-collections-3.2.1.jar lib/comm
 ons-lang-2.5.jar lib/commons-logging-1.1.1.jar lib/ezmorph-1.0.6.jar 
 lib/gson-2.8.5.jar lib/fastjson-1.2.47.jar lib/jackson-core-2.9.9.jar
  lib/jackson-databind-2.9.9.jar lib/jackson-annotations-2.9.0.jar lib
 /testng-7.1.0.jar lib/jcommander-1.72.jar lib/guice-4.1.0-no_aop.jar 
 lib/javax.inject-1.jar lib/aopalliance-1.0.jar lib/guava-19.0.jar lib
 /snakeyaml-1.21.jar lib/commons-codec-1.11.jar lib/poi-3.17.jar lib/c
 ommons-collections4-4.1.jar lib/poi-ooxml-3.17.jar lib/poi-ooxml-sche
 mas-3.17.jar lib/xmlbeans-2.6.0.jar lib/stax-api-1.0.1.jar lib/curves
 api-1.04.jar lib/javax.mail-api-1.5.3.jar lib/activation-1.1.jar lib/
 javax.mail-1.5.3.jar lib/httpclient-4.3.4.jar lib/httpcore-4.3.2.jar 
 lib/lucene-1.0.0-SNAPSHORT.jar
Created-By: Apache Maven 3.3.9
Build-Jdk: 1.8.0_181
Main-Class: com.cashew.Test1BasicDesignMode.singleMode.byEnum.T3Test00


maven-compiler-plugin会将mvc项目的依赖包打入WEB-INFlib中

原文地址:https://www.cnblogs.com/cashew/p/10869155.html