学习SpringBoot

概述

由于以前在工作中有使用Spring Boot的机会,我在公司的内部wiki上留下了备忘录式的笔记。
我打算将其保留在公开的场所,所以在这里写下来。

Spring Boot是什么?

    • Spring Framework一族のひとり

 

    • 簡単な設定で使えるSpring

 

    • Webコンテナを内包する

Webコンテナをjarに含めるので、jar単体でWebアプリとして成立する(スタンドアロン)

建立环境

    • Eclipse or IntelliJ IDEA Community EditionにSTS(Spring tool suite)のプラグインを入れる

 

    • Spring Starter Projectを作成する

ウィザードに従う

とりあえずweb -> Spring webを入れておけばおk

实践

自动配置

    • Bean定義自動設定

@SpringBootApplication

↑のアノテーションに@SpringBootConfigurationが付与、それに@Configurationが付与されている

@Configuration + @EnableAutoConfiguration + @ComponentScan

@EnableAutoConfigurationを付与することで自動設定が動く

org.springframework.boot.autoconfigure.EnableAutoConfigurationImportSelector.classの設定による

单元测试

@SpringBootTest

ApplicationContextを簡単操作

@TestConfiguration

カスタムコンフィグ

@MockBean

MockをDIできる

Web Environment test

Web環境を構成した上でテスト可能になる

SpringBootTestの使用について

遅いからUnit Testに向かない

-> テスト実行時の都度Spring Bootの起動が必要だから
Mockitoを使おう
ロジックのテストではなくユースケースのテストを書くなら有用

执行器

    • システムの状態を監視

 

    HTTPエンドポイントで管理できる

创建用于WebAPI的控制器类

@RestControllerをつける

@Controller + @ResponseBody

JSONやXML等を返す

@RequestMappingでUrlを設定

パラメーター

@PathVariableを使用

@RequetstMappingに{xxx}で@PathVariableでアノテートしたパラメータにバインドする

JavaBeanの返却

@RestControllerではJavaBeanをJSONにして返却する
HashMapも同じでJSONにして返却する

APIの呼び出し

RequestEntity(リクエストオブジェクト)
ResponseEntity(レスポンスオブジェクト)
RequestEntityをRestTemplateでJOSN化し、JSONで返ってきたデータをRestTemplateでオブジェクトに戻す
RestTemplate内にMessageConvertorがある

ファイル

org.springframework.core.io.FileSystemResourceを使用する

例外ハンドラ

クラスに@RestControllerAdvice

@RestControllerAdvice->ResponseBodyを返却、@ControllerAdvice->パスを返却

↑は例外ハンドラではなく、共通処理の実装方法
メソッドに@ExceptionHandler、引数は対象となる例外

Singleton

@Scopeでスコープを指定できる
基本的にSingletonでOKなのかは疑問

安全性

    • ErrorAttribute

DefaultErrorAttributesを継承してカスタムする

SpringBoot的缺点。

    • 設定が楽=設定部分が隠蔽されているということだから、いざ自分でカスタムする必要が出た時のコストが高め?

初学者はSpring MVCを先に学んだ方が良い
自分で設定、制御したいマンには向かない

スタンドアローンだからモノリシックなシステムに合わない
設計をミスると依存モジュールが膨大な数になる→起動時間の増加に繋がる(Spring MVCでも同じか)
大部分は設定が楽になることに対するデメリット

请看这个.

https://spring.io/projects/spring-boot – spring官方网站,介绍了Spring Boot的项目信息。
https://spring.pleiades.io/ – Pleiades的spring解决方案,提供了Spring Boot的文档和指南。
https://qiita.com/sugaryo/items/5695bfcc21365f429767 – Qiita网站的文章,讨论了Spring Boot的一些方面。
https://qiita.com/kazuki43zoo/items/8645d9765edd11c6f1dd – Qiita网站的文章,介绍了Spring Boot的一些用法。
https://dev.classmethod.jp/articles/spring-boot/ – Classmethod网站的文章,介绍了Spring Boot的使用和案例。
https://meetup-jp.toast.com/452 – TOAST Meetup的文章,介绍了Spring Boot的特性和用法。
https://dawaan.com/mockbean-vs-mock/ – Dawaan网站的文章,对比了MockBean和Mock在Spring Boot中的区别。
https://www.springboottutorial.com/spring-boot-projects-with-code-examples – Spring Boot教程网站,提供了一些带有代码示例的Spring Boot项目。
https://www.javaguides.net/2018/10/free-open-source-projects-using-spring-boot.html – Java Guides网站的文章,介绍了一些使用Spring Boot的免费开源项目。
https://dzone.com/articles/top-5-spring-boot-features-java-developers-should – DZone网站的文章,列举了Java开发人员应该了解的Spring Boot的前五个特性。
https://www.educba.com/what-is-spring-boot/ – EDUCBA网站的文章,解释了什么是Spring Boot以及其特点。
https://stackoverflow.com/tags/spring-boot/info – Stack Overflow网站关于Spring Boot的标签页,提供了关于Spring Boot的相关信息。
https://www.java2novice.com/java_interview_questions/spring-boot-pros-and-cons/ – Java2Novice网站的文章,讨论了Spring Boot的优缺点。

广告
将在 10 秒后关闭
bannerAds