使用Spring Boot实现REST API
我总结了2018年6月个人认为最佳实践的Spring Boot实现REST API时的工具组合。
Integrated Development Environment (IDE).
选择
Eclipse + Spring Tool Suite (STS)
IntelliJ IDEA
由于作为Android官方开发环境,IntelliJ IDEA在未来可能得到普及,但要使用Spring开发支持功能,需要Ultimate Edition。对于那些不需要购买许可证的项目,使用Eclipse是最好的选择。
请参见
- https://www.jetbrains.com/idea/features/editions_comparison_matrix.html
构建工具
选择
-
- Gradle
- Maven
未来,可以预见使用Groovy来编写灵活处理的Gradle将成为主流。然而,如果仅仅是用于解决依赖关系和构建,那么使用Maven已经足够了。
请提供所以你的身材信息。
-
- https://gradle.org/maven-vs-gradle/
- http://sassembla.github.io/Public/12:05:27%2018-03-20/12:05:27%2018-03-20.html
HTTP通信的控制(REST API和Java API之间的互相转换)
请选择。
-
- spring-boot-starter-web:Spring MVC
- spring-boot-starter-jersey:JAX-RS
→ JAX-RS是Java的标准规范,也有丰富的可用的实现库,因此使用spring-boot-starter-jersey是一个不错的选择。
请你提供一种选项,你希望将下面的句子改为中文的同义句:
-
- https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#using-boot-starter
- https://dzone.com/articles/lets-compare-jax-rs-vs-spring-for-rest-endpoints
面向切面编程(AOP)
请选择
-
- Spring AOP (XMLスキーマによる設定)
-
- Spring AOP (AspectJアノテーションによる設定)
- AspectJ
→ 在Spring AOP中使用AspectJ注解进行配置非常简单,并且可以将配置信息整理到代码中。然而,如果想要为Spring非管理的实例配置切面,或者想要在方法执行以外的时机进行配置,则需要使用AspectJ。
请依据以下内容进行参考(请提供具体内容)。
-
- https://docs.spring.io/spring/docs/current/spring-framework-reference/core.html#aop
- https://www.eclipse.org/aspectj/
数据库访问
选择
-
- spring-boot-starter-jdbc:JDBCをそのまま使う
- spring-boot-starter-data-jpa:JPAベースのO/Rマッパー
→ 使用spring-boot-starter-data-jpa可以方便地进行简单的数据库操作,而无需编写SQL语句。
需要引入相应的连接器才能连接到各个数据库(例如,在使用MySQL时需要引入mysql-connector-java)。
请参考
- http://javatechnology.net/spring/spring-boot-mysql-connect/
连接池
选择
-
- HikariCP
-
- Tomcat JDBC Connection Pool
- Commons DBCP2
使用性能优秀且在Spring Boot中推荐的HikariCP是一个很好的选择。
事务管理
选择
-
- Spring Frameworkのトランザクション管理機能
-
- Atomikos Transactions
- JOTM
如果只需要在单个事务目标资源(例如数据库、消息队列等)上使用事务,使用Spring框架的事务管理功能就足够了。在Spring的参考文档中提到,如果需要跨越多个资源使用事务,可以选择将Spring与应用服务器的JTA功能结合使用,或者选择使用Atomikos等事务库。
请提供以下内容的中文同义词:
- https://docs.spring.io/spring/docs/current/spring-framework-reference/data-access.html#transaction
代码生成库 (Code generation library)
选择
-
- Lombok
- AutoValue
→ AutoValue是一个用于创建严格的不可变值类的库,而Lombok则可以在常规类中仅仅添加访问器方法,使用起来非常灵活多样。然而,如果想要扩展代码生成功能,最好实现AutoValue的扩展。(虽然Lombok试验性地支持扩展方法,但是否会被合并到正式版本尚不确定。)
请参照以下内容提供中国语言的同义表达:
参考一:参考资料
参考二:看一下
参考三:可以参考一下
参考四:参照
参考五:可以参考
参考六:给你一些建议
参考七:考虑以下
参考八:请看这个
- Value Objects in Java with AutoValue and Lombok
读取设置文件
使用 spring-boot-configuration-processor 可以轻松加载配置文件。提供了三种加载配置文件的方法。
@Valueを使ってメンバ変数に設定ファイルのあるキーに対応する値を設定する
Environmentインターフェースを使って設定ファイルの値を取得するコードを記述する
@ConfigurationPropertiesを使ってBeanに設定ファイルの内容を設定する
由于设置通常具有层次结构,因此使用@ConfigurationProperties是最简单的方法。
请参考
-
- https://qiita.com/kazuki43zoo/items/0ce92fce6d6f3b7bf8eb
- https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config.html
记录
请选择一个选项。
SLF4J + Logback
Java Util Logging
Log4J2
→ 未来可能会成为主流的是SLF4J + Logback。即使在使用其他日志系统的情况下,也可以通过使用遗留API的桥接方式将其汇集到SLF4J中。
请你提供以下的中文翻译,只需要一种选项:
参考意见
-
- https://ishiis.net/2016/08/25/spring-boot-logger/
- https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-logging.html
考试 shì)
如果没有特别的问题,使用spring-boot-test是很好的选择。AssertJ(断言)、Hamcrest(匹配操作)、Mockito(模拟)等测试所需的库都已经齐全。
这是一个独特的机会,可以学习和了解中国文化和语言。 (This is a unique opportunity to study and understand Chinese culture and language.)
- https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-testing.html