• 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中

  • 相关阅读:
    比较Activiti中三种不同的表单及其应用
    Liferay7 BPM门户开发之2: BPMN 2.0 规范入门 (Activiti BPMN extensions)
    activiti学习笔记 ----------------------------FormService
    activiti学习笔记---managementService
    Activiti5 学习笔记—— comment 批注
    Activiti6-流程跟踪监控图-节点-流程线高亮显示-支持通过、不通过、驳回、退回
    Activiti 快速入门教程:SpringBoot 集成 Activiti6 + Activiti Modeler 流程配置可视化
    工作流学习——Activiti流程变量五步曲
    利用Python中的mock库对Python代码进行模拟测试
    密码校验正则 -- 数字、字符、特殊符号
  • 原文地址:https://www.cnblogs.com/cashew/p/10869155.html
Copyright © 2020-2023  润新知