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-INF\lib下。
如果加入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-INF\lib中