Spring Boot 笔记

由于最近刚开始接触Spring Boot,所以我想记录下自己的理解作为备忘录。

你好世界的样子

先试着阅读一下官方的“入门指南”。

Spring Boot使得创建独立、生产级别的基于Spring框架的应用程序以及运行这些应用程序变得容易。

你觉得可以运行功能强大的Spring基础商用级应用的单机版本吗?

需要的东西 de

    • Java(あたりまえですが)

 

    Maven(ビルドツール) ※GradleでもOK。

如何操作

有几种方法可供选择,但只要启动Web服务器+应用服务器,即可一键启动应用程序,无需进行部署。这种感觉就是”独立运行”吗?

使用Spring Boot CLI启动

下载CLI并使用bin文件夹中的sprint.bat启动用Java编写的应用程序(class文件)进行测试。

spring run 作成したクラスファイル

只需启动,Web服务器+应用服务器将会在localhost:8080上启动,并显示”Hello World”。

通过mvn spring-boot:run命令进行启动

编写所需的pom.xml定义,并编写控制器类,然后尝试从Maven启动应用程序。

mvn spring-boot:run

通过构建,Web服务器+应用服务器在localhost:8080上启动,并显示Hello World。

用可执行的 Jar 文件进行启动

在pom.xml中编写所需的定义,并编写一个控制器类,然后使用Maven创建一个jar文件并启动应用程序进行测试。

mvn package
java -jar (Jarファイル)

因此,Web服务器+应用服务器启动并在localhost:8080上显示Hello World。这个可执行的Jar好像还可以直接用于启停服务的批处理文件等。参考Spring Boot的Fully Executable Jar为什么能够运行?

尝试使用RESTful的WebAPI

继续阅读《构建一个RESTful网络服务》。

基本构成

通过实现一个RESTful的WebAPI示例来理解其基本结构。

    • representation

 

    • いわゆるPOJOでOK。JSONへの変換はJackson2を利用して

 

    • MappingJackson2HttpMessageConverterクラスが自動的にやってくれる。

 

    • controller

@RestController
クラスに設定。コントローラとしての役割を持たせるためのアノテーション。

@RequestMapping
メソッドに設定。サーブレットパスとメソッドとのマッピング。
@RequestMapping(method=POST)のようにメソッド指定しないと、全メソッド共通でマッピングする。

@RequestParam
クエリパラメータとのマッピング。defaultValue=xxx で指定されない場合のデフォルト値の指定が可能。

application
executableなjarとして動かす場合にはmain()を持ったApplicaitonクラスを作成する。

@SpringBootApplication
@EnableAutoConfigurationと@ComponentScanと@Configurationをまとめて実装するためのアノテーション。

@EnableAutoConfiguration
フツーのSpringでしてたあの定義ファイルの役割をやってくれるためのアノテーション。
Bean定義を書かなくてもアプリが動いちゃうってことは、これがSpring-bootの嬉しさのキモ?
(参考) Spring BootのAutoConfigureの仕組みを理解する

执行

使用mvn spring-boot:run命令来启动服务器,并实施上述操作。当访问http://localhost:8080/xxxxx(xxxxx为资源名)时,控制器中映射的方法将被调用,并返回JSON。

察觉到的事情

    • ↑のRESTfulなサンプルアプリを作成してmvn spring-boot:runしたら、

 

    • http://localhost:8080/greetingでレスポンスが表示されるようになったが、

 

    • Getting Started で作成済だったExample.javaが動かなくなった。

 

    • (http://localhost:8080/でHello World!が出なくなった)

 

    • ⇒クラスの階層が以下のようになっていた。

 

    • project/src/main/java/Example.java

 

    • project/src/main/java/hello/Application.java

 

    • Example.javaを、src/main/java/helloパッケージ配下に移動したら、動作した。

 

    @ComponentScanが自身より上位の階層をスキャンしないから…だろうか。(自信なし)

以后

不停地阅读公式指南页面。
记录理解的内容。

bannerAds