Spring Boot + Spring SecurityでREST APIってどう作るの?という疑問から、その作成方法について連載していきます。今回はイントロダクションとして、REST APIの実装に必要な知識についていくつか説明していきます。 b1tblog.com. ・開発言語 :Java 8(jdk 1.8.0_121 x64) ・フレームワーク :Spring Boot 1.5.4 ・開発環境(IDE) :Eclipse 4.6.3. 3. 19. まずEclipseにSpring開発ツールのプラグインSTS(Spring Tool Suite)をインストールします。 Spring BootもSpring Frameworkをベースとするフレームワークのひとつです。 従来の豊富な各種コンポーネントを組み合わせて活用しつつ、迅速な開発のための新たな機能を実装しています。 Spring Bootの特徴. よく訓練されたアップル信者、都元です。さて、近年のSpring事情を語るのに避けて通れないのがSpring Bootです。, とは言え、正直Spring Bootは何をしてくれるコンポーネントなのか。これを一言で説明するのは実は非常に難しいです。なので、以下に私の思うSpring Bootの大事な特徴を2つ挙げますが、それだけがSpring Bootではない、という認識もしておいてください。, 作ったアプリケーションの起動を簡単にできます。具体的には java -jar your-app.jar でOK。面倒くさいクラスパスの指定等不要で、単一のjarファイルで起動可能になります。, これは、スタンドアロンのアプリケーションでも、Webアプリケーションでも同じです。つまり場合によっては java -jar your-app.jar によって、Webサーバが立ち上がることになります。もはやサーバ側にJettyやTomcat等のWebコンテナをセットアップする必要はありません。ただ、これはJettyやTomcat等が要らなくなったわけではなく、1つの実行jarファイルの中に取り込まれただけです。, さて、起動するエントリポイントは分かりやすく、Javaのmainメソッドです。ということは、IDE上でそのまま起動させることも簡単で、IDEのデバッガとの接続も楽々です。, 基本的な設定が自動化されます。XML地獄からは離脱したと思ったら、次に待っているのはアノテーション地獄だった、というのは至極当然な帰結です。, Spring Bootでは、例えば「クラスパス上にorg.springframework.jdbc.datasource.embedded.EmbeddedDatabaseTypeがあったら(つまりspring-jdbc-*.jarが依存に入っていたら)、DataSourceやJdbcTemplateのbean定義を自動的に行う」とか「クラスパス上にorg.thymeleaf.spring4.SpringTemplateEngineクラスがあったら、Thymeleafの基本設定を自動で行う」という動きをします。, かなりの上級黒魔術感がありますね。ただし、この仕組によって、ボイラープレートと呼ばれる大部分のつまらない設定が不要になります。デフォルトの自動設定内容では対応できなかった場合でも、アノテーションを駆使してシンプルな設定内容を維持できる傾向があります。, また、開発を進めるにあたって、ひとまず関連jarファイルを依存に追加するだけで、すぐに新しい機能を使いはじめる体制ができあがるわけです。, サポートするライブラリは、上に挙げた Spring JDBC や Thymeleaf の他に、Spring Security, Spring Data, Solr, 各種Logger, 各種Cache等、様々なものがあります。, まず、Spring Bootアプリケーションをビルドするためには、Gradleのビルド設定を少々変更する必要があります。, 一点注意頂きたいのは、1番は「Gradleのビルドスクリプトにおける依存ライブラリ」で、3番は「アプリケーションにおける依存ライブラリ」であることです。, たったこれだけです。メインとなるアプリケーションクラスを1つ作り、@SpringBootApplicationアノテーションを付与、そのクラスのmainにて、自分のクラスを指定してSpringApplicationインスタンスを作って、runするだけです。, これを起動すると、まずこのクラスがあるパッケージ以下をスキャンして@Configurationや@Component等のbean自動登録を行います。その上で、必要なDI(ここではFoo)を行いつつ、runメソッドを呼び出してくれるというわけです。, 上の例では示しませんでしたが、このクラス内で@Beanによるspring bean定義も可能です。, これで、Spring Bootによるコマンドラインアプリケーションの出来上がりです。, コンパクトに例を示すために、上の例も含めて、これらを混ぜて1つのクラスとして示してしまうことが多いのですが、実践的なアプリケーションにおいては、これらのクラスは明確に分離すべきだと思っています。, いつものとおり、タグをチェックアウトして実行してみましょう。Spring Bootアプリケーションの起動はbootRunタスクから行います。今までの execute は使えなくなっていますのでご注意ください。, さて、そろそろWebアプリを作りたくなって来たと思います。2年前からですって? サーセンww, アプリケーションの依存にorg.springframework.boot:spring-boot-starter-webを追加するだけです。, まず増えたのは、@RestControllerアノテーションです。これは、このクラスがHTTPリクエストに対するRESTfulなコントローラ(リクエストハンドラメソッドを持つクラス)となる、という宣言です。, 次に、このアプリケーションはコマンドラインアプリケーションではありませんので、CommandLineRunnerインターフェイスとrunの実装は削除します。その上で@RequestMappingアノテーションを付与した、リクエストハンドラメソッドを実装します。, @RequestMapping(value = "/", method = RequestMethod.GET)というのは、/に対するGETリクエストは、このメソッドでハンドリングする、という意味です。メソッド名は何でも構いません。, ハンドラメソッドの戻り値としては(色々使えるものはあるのですが)ResponseEntityが一般的です。このクラスは「返したいボディーの値」と「ステータスコード」の組み合わせだとイメージして頂ければ。, で、このメソッドの中身では、とりあえずユーザ一覧を取得し、その文字列表現をカンマ区切りでつないだものを作り出し、それを「返したいボディーの値」として(200 OKのステータスで)返しています。, さて今回もまた、タグをチェックアウトして実行してみましょう。先ほどと同様、実行はbootRunタスクから行います。, > Building 80% > :bootRun という状態で止まると思います。(この状態から終了させたいときは、CTRL+Cです。), ちょっとログは多いですが、Apache Tomcat8系 がポート8080で起動しているようですね。, 別のターミナルからcurlコマンドでアクセスしてみると、想定通り、全ユーザの情報を出力してくれています。, いかがでしたでしょうか。これだけ簡単な手順で、Springベースのアプリケーションを実装できるとは、一昔前は思いもよらなかったことです。その分相応の黒魔術を使っているわけですが、この楽々さ加減はやめられませんね。, ちなみに本来Springでアプリケーションを構築する場合は、「Spring configurationクラス」と「その他一般クラス」を基本的に分けて管理すべきです。前者は旧来SpringのXML Bean定義ファイルに相当するもので、`@Configuration`が付いたクラス内の`@Bean`が付いたメソッドでSpring bean定義を行うものです。後者は、主にアプリケーションのドメイン及びロジックを記述し、`@Autowired`等を介してDIを受け付けるものです。.

Eclipseプラグインのインストール. OS:OS X 10.11 El Capitan; STS:3.8… Docker support.

とは言え、正直Spring Bootは何をし … Spring Tools 4 now bridges the gap between your source code and running Spring Boot applications. Spring Boot 2.3 supports Java 14 while also remaining compatible with Java 11 and 8. 多くのWebアプリケーションフレームワークがある中で最もユーザに使われているフレームワークが「Spring Boot」といわれています。, 本記事では、初心者でもSpring Bootをすぐに利用できるように、環境構築から簡単なWebアプリケーション開発までの手順をわかりやすく解説します。, Spring Bootは、JavaによるWebアプリケーションの開発を迅速かつ効率的に行う仕組みを備えたフレームワークです。, Spring Frameworkは現在に至るまで様々な機能拡張がなされ、それらがサブコンポーネントのような位置づけで個々のフレームワークとして提供されてきました。, 豊富な機能が充実する一方で、組み合わせて使うには煩雑な設定とノウハウが必要という課題も指摘されるようになりました。, この課題に取り組み、最小限の設定とより少ないコード量でアプリケーションを作成して、すぐに実行できる仕組みを実装したのがSpring Bootです。, Spring BootもSpring Frameworkをベースとするフレームワークのひとつです。, 従来の豊富な各種コンポーネントを組み合わせて活用しつつ、迅速な開発のための新たな機能を実装しています。, Spring Bootでは、煩雑であったXML設定ファイルをなくし、さらに基本的な設定を自動化しています。, Spring Bootでは、単一のjarファイルで実行できるスタンドアロン的なWebアプリケーションを構築する仕組みを搭載しています。, Spring Bootでは、標準機能としてTomcatやJettyなどのWebコンテナが組み込まれています。, WebアプリケーションをWebコンテナの組み込まれたjarファイルで起動することができ、デプロイの手間が不要となりました。, Spring Bootでは、専用の統合開発環境である「Spring Tool Suite(STS:以下STSといいます)」が用意されています。, STSを利用するにはJDK(Java SE Development Kit)が必須です。, もしJDKが、インストールされていなければ、OracleのJDKダウンロードサイトよりインストールをしてください。, STSは、SpringSourceの公式サイトからダウンロードをすることができます。, このページでSpring Tools 4 for Eclipse のWINDOWS 64-BITを選択すると画面下部に以下の表示がでてきます。, 保存ボタンを押して任意フォルダを指定するとダウンロードが開始され、次の名称の約388MBの自動解凍型のjarファイルができます。, ダウンロードしたjarファイルを選択して実行するとSTSのインストールが始まります。, ステータスが100%になるとsts-4.5.1RELEASEというフォルダがjarファイルと同じフォルダ内に新規に作成されます。, STSを起動するには、Spring Tools Suite4.exe を選択して実行します。, 実行がはじまるとSelect a directory as worlspaceの画面が表示されます。, デフォルトのままLaunchボタンを押してしばらく待つとSTSの画面が表示されます。, この状態では標準の英語表記となっていますが、次章で説明する日本語化をするとこの画面も日本語表記となります。, STSはEclipseをベースに開発されているため、Eclipseの日本語化プラグイン「Pleiades」を適用することで、STSの日本語化ができます。, Pleiadesプラグインは、開発元のMargeDoc Projectの公式サイトよりダウンロードできます。, ページ内のPleiades プラグイン・ダウンロードの表示があるところで、Windowsを選択すると、pleiades-win.zipという圧縮ファイルがダウンロードされます。, ダウンロードされたzipファイルを選択して解凍します。展開されたフォルダには、サブフォルダとファイルができています。, 以上で、Pleiadesプラグインのダウンロードとダウンロードファイルの展開ができました。, ダウンロードファイルを展開したフォルダで、setup.exeを選択して実行するとインストールが開始されます。, Pleiades 日本語化プラグインのセットアップ画面が表示されるので選択ボタンを選んで日本語化されるアプリケーションを選択します。, あらかじめインストールしたSTSの実行ファイル、SpringToolSuite4.exeを指定して、開くボタンを押します。, 日本語化するアプリケーション、Pleiadesが配置されるディレクトリ、Pleiadesの設定が追加されるファイルの内容が表示されます。, 間違いがないことを確認して日本語化するボタンを押して、STSの日本語化が完了しました。, 正常に日本語化対応がされています。起動ボタンを押すと、ステータスの画面が表示されしばらくすると、STSの画面が表示されます。STSの画面が日本語表記になります。, STSを起動すると画面が表示されます。区切られたひとつひとつのエリアのことをビューといいます。, ビューにはプロジェクトを構成するフォルダやファイルが階層的に表示されます。ファイルの新規追加や削除等の操作ができます。, このビューでは、Spring Bootで作成されたアプリケーションプロセスのの起動や再起動、停止などの制御ができます。, コンソールのビュー上には、アプリケーションの実行状況やエラーメッセージなどが表示されます。, このビューでは、編集画面に表示されるコードの階層構造が表示されます。階層構造の項目を指定して編集画面のポインタを移動させることなどができます。, 本章では、Spring Bootのチュートリアルに従って、Spring initializrを用いたWebアプリケーションの作成手順を説明します。, こちらのサイトを開きます。ページを下にたどると、Starting Spring Initializrの説明がでてきます。, Spring Initializrを選択すると、ダウンロード用の画面が表示されるので、Dependenciesの欄にwebと入力してSpring web を選択します。, 他の項目は、デフォルトの状態としてGenerate-Ctrl+を選択すると、demo.zipというInitializrのzipファイルがダウンロードできます。これを任意のフォルダに保存しておきます。, 次に、STSを起動して、STSの画面を開きます。ファイルメニューよりインポートを選択します。, 既存Marvenプロジェクトが選ばれていることを確認して次へのボタンを押すと、Mavenプロジェクトの画面が表示されます。, 参照ボタンを押して、Initializrのdemoフォルダのパスを入力します。画面に正常にパスが表示されたら、完了ボタンを押します。, パッケージエクプローラーでDemoApplication.javaを指定すると編集エリアにコードが表示されます。, コントローラークラスを追加してSpring Bootのチュートリアルのサンプル、HelloControllerをそのまま実装することにします。, STS画面で、ファイルメニューより、新規—クラスを選択するとJavaクラスの画面が表示されます。, 名前をHelloControllerとして、完了ボタンを押すと、HelloContorollerのひな型が作成されました。, 編集エリアでHelloControllに次のコードを記述します。RestContorollerを用いたコードとします。, パッケージエクスプローラーでdemo(boot)を指定して、STSの実行(R)メニューより実行(S) — Spring Boot App を選択します。, ブラウザを開いて、URLにhttp://localhost:8080 を入力します。作成したWebアプリケーションの実行結果が次のように表示されます。, Webアプリケーションdemoが正常に実行されてGreetings from Spring Boot!というメッセージが表示されました。, 本章では、Spring スターター・プロジェクトを使ったWebアプリケーションの作成手順を説明します。, 作成するWebアプリケーションの内容は前章で作成したSpring Intialozr と同様のものとしますが、ここでは既存プロジェクトをインポートするのではなく、Springスターターの機能を用いて新規にプロジェクトを作成します。, STSのファイルメニューより、新規—Springスターター・プロジェクトを選択します。, 名前をdemo2と入力し、その他の設定はデフォルトを使うことにしまて、次へのボタンを押します。, 新規Springスターター・プロジェクト依存関係の画面が表示されるので、使用可能の欄にwebと入力し、表示された一覧からSpring Webにチェックをつけて完了ボタンを押します。, プロジェクトの作成が完了して、パッケージ・エクスプローラーにプロジェクトdemo2が追加されました。, コントローラークラスを追加します。前章と同様にHelloControllerを実装していきす。, パッケージ・エクスプローラーでdemo2を指定して、ファイルメニューより、新規—クラスを選択します。, 名前をHelloControllerとして完了ボタンを押し、HelloContorollerのひな型を作成します。, HelloControllに次のコードを記述します。RestContorollerを用います。, パッケージエクスプローラーで、demo2(boot)を指定して、STSの実行(R)メニューより実行(S) — Spring Boot App を選択します。, Webアプリケーションdemo2が正常に実行されてGreetings from Spring Boot!というメッセージが表示されました。, 本章では、STSの「Thymeleaf」テンプレートとControllerを用いたWebアプリケーションの作成手順を説明します。, Spring Bootでは、このThymeleafのテンプレートとControllerを用いる手法が一般的です。, 新規Springスターター・プロジェクトの画面が表示されるので、名前をdemo3と入力しその他の設定はデフォルトを使うことにして次へのボタンを押します。, 使用可能の欄にwebと入力して、表示された一覧からSpring WebとThymeleafの両方にチェックをつけて完了ボタンを押します。ここでThymeleafの使用を宣言することになります。, パッケージ・エクスプローラーのビューでdemo3のプロジェクトを選択して、ファイルメニューより、新規—クラスを選択します。, Javaクラスの画面が表示されるので、名前を Hello2Controllerとして、完了ボタンを押します。, Spring Bootでは、テンプレート機能を利用する場合には、一般的にRestControllerクラスではなくControllerクラスを使います。, ここでもControllerクラスを用いることにして@Controllerアノテーションをつけます。, また、コントローラからテンプレートにデータを渡すためにデータ管理用のクラスModelクラスのaddAttributeメソッドを利用します。, 本コードは、テンプレート側に“Greetings from Spring Boot!”というメッセージをわたす単純な処理となっています。, パッケージ・エクスプローラーのビューでdemo3のプロジェクトを選択して、ファイルメニューより、新規—その他を選択します。, ウイザード画面がでてきます。web配下のHTMLファイルを選択して次へボタンを押します。, 新規HTMLファイル画面で、テンプレートを保存する親フォルダを次のように指定します。, テンプレートでは、初期状態で最低限のHTMIタグが記述されてます。ここでは、index.htmlを次のように変更・追記します。, このテンプレートは、コントローラより渡される$msgを表示するだけの簡単な内容です。, 通常のhtmlと異なる部分は、th:text属性、$msg変数が使われている部分になります。これで、demo3プロジェクトが完成しました。, パッケージエクスプローラーで、demo3(boot)を指定して、STSの実行(R)メニューより 実行(S) — Spring Boot App を選択します。, Webアプリケーションdemo3が正常に実行されてGreetings from Spring Boot!というメッセージが表示されました。, 2016年に前身となる「Spring Bootプログラミング入門」が出版され、本書は2018年1月に全面改訂して出版されたものです。, STS(Spring Tool Suite)をベースとしたWebアプリケーション開発方法がわかりやすく詳細に記述されていて、初めてSpring Bootで開発をする初心者におすすめです。, 概要:初版は当時日本では初めてと思われるSpring Bootの解説書として2014年に出版され、2016年にSpring Bootのバージョンアップを反映して本改訂版が出版されました。, Spring FrameworkにおけるSpring Bootの位置づけがわかりやすく説明されています。, アプリケーション作成方法がステップ・バイ・ステップで説明され、コードの説明も丁寧です。, ここまで、Spring Bootの統合開発環境Spring Tool Suite(STS)を利用して簡単なWebアプリケーションを作成する3つの手法を紹介しました。, アプリケーションの内容は、いずれもメッセージを表示するだけの単純なものでしたが、ThymeleafテンプレートとControllerを組み合わせる手法はSpring Bootにおいて、最も使いやすく代表的なプロジェクト開発手法といえるでしょう。, Spring Bootとは?Spring Bootの基礎や使い方を初心者向けに解説!チュートリアルやおすすめの本も紹介, プログラミング用PCに最適なスペックを徹底調査!快適な開発環境が得られるスペックは?実力別ノートパソコンの選び方も解説, 2の補数とは?2の補数の計算方法と表現範囲をわかりやすく解説!1の補数との違いは?C言語での補数計算プログラムもチェック, Visual Basicとは?できることやインストール方法、基本的な文法を確認しよう。VBAとVBの違いも紹介!, IT業界の給料ランキングを紹介!平均年収や給料相場が高い職種は?年収1,000万円も可能?会社員とフリーの給料を徹底比較, 【SQL Server入門】SQL Serverの構造や使い方をわかりやすく解説!ダウンロード方法や導入のメリットも紹介, 【ラズベリーパイ入門】ラズベリーパイの使い方やできることを徹底解説!カメラモジュールの接続方法は?使える言語もチェック, OpenGLとは?OpenGLの基礎をわかりやすく解説!OpenGLのメリットは?導入手順とバージョン確認の方法も確認, Redisの特徴と基本的な使い方をわかりやすく解説!Redisの用途と活用方法・メリットは?使えるコマンド一覧もご紹介, Tomcatとは?使い方を分かりやすく解説!初心者向けのインストール手順も確認。Apacheと連携するメリットも紹介, 詳細設計とは?詳細設計書の書き方を徹底解説!成果物の作成方法や記載すべき項目は?内部設計や仕様書との違い・サンプルも紹介, AWS認定クラウドプラクティショナー合格に向けた勉強法を解説!難易度や合格率を確認して対策しよう!オススメの参考書も紹介, MariaDBとは?MariaDBの使い方やMySQLとの違いを比較して解説!基本コマンドや互換性・移行方法も確認しよう, AnacondaでのPython環境インストール、使用方法を解説|日本語化の方法とは?Pycharmとの違いも紹介, Ajaxの使い方を徹底解説!基本的な書き方と実装方法は?POST通信とGET通信・jQueryでの利用方法も確認しよう, . 38. 今回は認証については考えず、まずは基本的なAPI 本記事ではSpring BootでRest API(GET)を作成する手順について説明します。 また、作成したAPIの動作確認として、 作成したAPIに対してブラウザからHTTPのGETメソッドでリクエストし、 JSON形式のレスポンスが返却されることも確認します。 絵にするとこんな感じ 環境. 第8回 Spring Bootを使ってみよう . Spring Boot 2.3 adds some interesting new features that can help you package up your Spring Boot application into Docker images.