zoukankan      html  css  js  c++  java
  • 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中

  • 相关阅读:
    onInterceptTouchEvent 与 onTouchEvent 分析与MotionEvent在ViewGroup与View中的分发
    不用windows不会死
    iframe动态改变内嵌页面高度
    算法5-8:矩形相交
    浅析数据库连接池(二)
    Ubuntu下(Linux+Apache+MYSQL+PHP, LAMP)环境搭建
    unix环境高级编程----进程控制wait()
    centos7 通过kvm+vnc 实现远程桌面虚拟化和创建windows、Linux虚拟机
    Android native层动态库注射
    Windows10 下 JAVA JDK版本设置修改操作
  • 原文地址:https://www.cnblogs.com/cashew/p/10869155.html
Copyright © 2011-2022 走看看