本系列代码地址:https://github.com/HashZhang/...

源代码文件:https://github.com/HashZhang/...

1. 应用 log4j2 异步日志所须要的依赖:须要排除默认的日志实现 logback,减少 log4j2 的依赖,并且增加 log4j2 异步日志须要的 disruptor 依赖。

<!--日志须要用log4j2--><dependency>    <groupId>org.springframework.boot</groupId>    <artifactId>spring-boot-starter</artifactId>    <exclusions>        <exclusion>            <groupId>org.springframework.boot</groupId>            <artifactId>spring-boot-starter-logging</artifactId>        </exclusion>    </exclusions></dependency><dependency>    <groupId>org.springframework.boot</groupId>    <artifactId>spring-boot-starter-log4j2</artifactId></dependency><!--log4j2异步日志须要的依赖,所有我的项目都必须用log4j2和异步日志配置--><dependency>    <groupId>com.lmax</groupId>    <artifactId>disruptor</artifactId>    <version>${disruptor.version}</version></dependency>

2. javax.xml 的相干依赖。咱们的我的项目应用 JDK 11。JDK 9 之后的模块化个性导致 javax.xml 不主动加载,所以须要如下模块:

<dependency>    <groupId>javax.xml.bind</groupId>    <artifactId>jaxb-api</artifactId>    <version>${jaxb.version}</version></dependency><dependency>    <groupId>com.sun.xml.bind</groupId>    <artifactId>jaxb-impl</artifactId>    <version>${jaxb.version}</version></dependency><dependency>    <groupId>org.glassfish.jaxb</groupId>    <artifactId>jaxb-runtime</artifactId>    <version>${jaxb.version}</version></dependency><dependency>    <groupId>com.sun.xml.bind</groupId>    <artifactId>jaxb-xjc</artifactId>    <version>${jaxb.version}</version></dependency><dependency>    <groupId>javax.activation</groupId>    <artifactId>activation</artifactId>    <version>${activation.version}</version></dependency>

3. 应用 Junit 5 进行单元测试,Junit 5 应用能够参考:Junit5 user guide

<dependency>    <groupId>junit</groupId>    <artifactId>junit</artifactId>    <scope>test</scope></dependency>

4. 应用 Spring Boot 单元测试,能够参考:features.testing

<dependency>    <groupId>org.springframework.boot</groupId>    <artifactId>spring-boot-starter-test</artifactId>    <scope>test</scope></dependency>

5. mockito扩大,次要是须要mock final类:Spring Boot 单元测试曾经蕴含了 mockito 依赖了,然而咱们还须要 Mock final 类,所以增加以下依赖:

<!--mockito扩大,次要是须要mock final类--><dependency>    <groupId>org.mockito</groupId>    <artifactId>mockito-inline</artifactId>    <version>${mokito.version}</version>    <scope>test</scope></dependency>

6. embedded-redis:应用 embedded-redis 用于波及 Redis 的单元测试:如果你的单元测试须要拜访 redis,则须要在测试前初始化一个 redis,并在测试后敞开。应用 embedded-redis 就能够。咱们在 spring-cloud-parent 中曾经增加了这个依赖,所以能够间接应用。参考:embedded-redis

<dependency>    <groupId>com.github.kstyrc</groupId>    <artifactId>embedded-redis</artifactId>    <version>${embedded-redis.version}</version>    <scope>test</scope></dependency>

7. sqlite 单元测试依赖:对于数据库的单元测试,咱们能够应用 SQLite。参考:sqlite-jdbc

<dependency>    <groupId>org.xerial</groupId>    <artifactId>sqlite-jdbc</artifactId>    <version>${sqlite-jdbc.version}</version>    <scope>test</scope></dependency>

8. 指定编译级别为 Java 11

<build>    <plugins>        <plugin>            <groupId>org.apache.maven.plugins</groupId>            <artifactId>maven-compiler-plugin</artifactId>            <version>3.8.1</version>            <configuration>                <source>11</source>                <!--ingore javac compiler assert error-->                <forceJavacCompilerUse>true</forceJavacCompilerUse>                <target>11</target>            </configuration>        </plugin>    </plugins></build>

源代码文件:https://github.com/HashZhang/...

作为应用 spring 与 spring boot 框架的公共依赖 spring-framework-common 我的项目是一个纯依赖的我的项目。

1. 外部缓存框架对立采纳caffeine:这是一个很高效的本地缓存框架,接口设计与 Guava-Cache 完全一致,能够很容易地降级。性能上,caffeine 源码外面就有和 Guava-Cache, ConcurrentHashMap,ElasticSearchMap,Collision 和 Ehcache 等等实现的比照测试,并且测试给予了 yahoo 测试库,模仿了近似于实在用户场景,并且,caffeine 参考了很多论文实现不同场景实用的缓存,例如:

  1. Adaptive Replacement Cache:[http://www.cs.cmu.edu/~15-440...]()
    2.Quadruply-segmented LRU:http://www.cs.cornell.edu/~qh...
  2. 2 Queue:http://www.tedunangst.com/fla...
  3. Segmented LRU:http://www.is.kyusan-u.ac.jp/...
  4. Filtering-based Buffer Cache:http://storageconference.us/2...

所以,咱们抉择 caffeine 作为咱们的本地缓存框架,参考:caffeine

<dependency>    <groupId>com.github.ben-manes.caffeine</groupId>    <artifactId>caffeine</artifactId></dependency>

2. 应用 google 的 java 开发库 guava:guava 是 google 的 Java 库,尽管本地缓存咱们不应用 guava,然而 guava 还有很多其余的元素咱们常常用到。参考:guava docs

<dependency>    <groupId>com.google.guava</groupId>    <artifactId>guava</artifactId>    <version>${guava.version}</version></dependency>

3. 外部序列化对立采纳fastjson:留神 json 库个别都须要预热一下,前面会提到怎么做。参考:fastjson

<dependency>    <groupId>com.alibaba</groupId>    <artifactId>fastjson</artifactId>    <version>${fastjson.version}</version></dependency>

4. 应用 lombok 简化代码,参考:projectlombok

<dependency>    <groupId>org.projectlombok</groupId>    <artifactId>lombok</artifactId></dependency>

5. 调用门路记录 - sleuth。参考:spring-cloud-sleuth

<dependency>    <groupId>org.springframework.cloud</groupId>    <artifactId>spring-cloud-starter-sleuth</artifactId></dependency>

6. 跨线程 ThreadLocal。参考:transmittable-thread-local

<dependency>    <groupId>com.alibaba</groupId>    <artifactId>transmittable-thread-local</artifactId>    <version>${transmittable-thread-local.version}</version></dependency>

7. Swagger 相干。参考:swagger

<!--Swagger--><!-- swagger java元数据集成 --><dependency>    <groupId>io.springfox</groupId>    <artifactId>springfox-swagger2</artifactId>    <version>${swagger.version}</version></dependency><!-- swagger 前端页面 --><dependency>    <groupId>io.springfox</groupId>    <artifactId>springfox-swagger-ui</artifactId>    <version>${swagger.version}</version></dependency>

8. Apache Commons 相干工具包。咱们会应用一些 Commons 工具包,来简化代码:

  • commons-lang
  • commons-collections
  • commons-text
<!-- https://mvnrepository.com/artifact/org.apache.commons/commons-lang3 --><dependency>    <groupId>org.apache.commons</groupId>    <artifactId>commons-lang3</artifactId></dependency><!-- https://mvnrepository.com/artifact/org.apache.commons/commons-collections4 --><dependency>    <groupId>org.apache.commons</groupId>    <artifactId>commons-collections4</artifactId>    <version>${commons-collections4.version}</version></dependency><!-- https://mvnrepository.com/artifact/org.apache.commons/commons-text --><dependency>    <groupId>org.apache.commons</groupId>    <artifactId>commons-text</artifactId>    <version>${commons-text.version}</version></dependency>

本大节咱们具体阐明了咱们所有我的项目的 parent,以及 应用了 Spring 与 Spring Boot 个性的工具包依赖 spring-framework-common 的设计。下一节咱们将详细分析提供微服务个性的依赖。

微信搜寻“我的编程喵”关注公众号,每日一刷,轻松晋升技术,斩获各种offer