Skip to content

Latest commit

 

History

History
107 lines (85 loc) · 6.14 KB

todo-5.md

File metadata and controls

107 lines (85 loc) · 6.14 KB

演習5 Spring Bootによる無設定化

使うプロジェクト

03-boot2

このプロジェクトはSpring Initializrで雛形を作成後、02-spring5-answerのほぼ全てのファイルをコピーして作成しています。 Spring Bootによってどの設定が不要になるのか(もしくは変わらず必要なのか)を確認しながらTODOを進めてください。

主に使うパッケージ

すべて

TODO 5-01

Applicationクラスは、Spring Bootの起点となるクラスです。 @SpringBootApplicationアノテーションをクラスに付加してください。

TODO 5-02

pom.xmlを確認してください。各種Starterライブラリによって、指定するライブラリが少なくなっていることを確認してください(変更不要)。

TODO 5-03

DataSourceConfigクラスは、組み込みDataSourceをBean定義しています。 このBeanはAuto Configuration対象のため、Spring BootがBeanを作成します。 よってこのJava Configクラスは不要のため、ファイルごと削除してください。

TODO 5-04

組み込みDBの初期化で利用するSQLファイルの文字コードは、application.propertiesに指定します。 下記のプロパティを追記してください。

spring.datasource.sql-script-encoding=utf-8

TODO 5-05

JdbcConfigクラスは、Spring Data JDBC関連のBeanを定義しています。 コンポーネントスキャンは@SpringBootApplicationによって行われます。 リポジトリインタフェースのスキャン、NamedParameterJdbcTemplateのBean定義などはSpring BootのAuto Configurationクラスによって行われます。 よってこのJava Configクラスは不要のため、ファイルごと削除してください。 configパッケージも不要なので削除してください。

TODO 5-06

ServiceConfigクラスは、トランザクション関連の設定を記述しています。 これらは全てAuto Configuration対象のため、Spring BootがBeanを作成します。 よってこのJava Configクラスは不要のため、ファイルごと削除してください。 configパッケージも不要なので削除してください。

TODO 5-07

MvcConfigクラスは、Spring MVC関連の設定を記述しています。 これらは全てAuto Configuration対象のため、Spring BootがBeanを作成します。 よってこのJava Configクラスは不要のため、ファイルごと削除してください。

TODO 5-08

MvcInitializerクラスは、DispatcherServletをサーバーに登録しています。 これはAuto Configuration対象のため、Spring Bootが行います。 よってこのクラスは不要のため、ファイルごと削除してください。 configパッケージも不要なので削除してください。

TODO 5-09

web.xmlでは、サーブレットフィルターの登録を行っています。 CharacterEncodingFilterおよびspringSecurityFilterChainはAuto Configuration対象のため、Spring Bootが登録を行います。 また、その他のフィルター(LoggingFilterなど)は別の方法で登録を行います(次のTODO)。 よってこのXMLは不要のため、src/main/webappフォルダごと削除してください。

TODO 5-10

Spring Bootでは、FilterRegistrationBeanをBean定義することでサーブレットフィルターを登録します。 Applicationクラスに、下記の記述を追加してください。

    @Bean
    public FilterRegistrationBean loggingFilter() {
        LoggingFilter loggingFilter = new LoggingFilter();
        FilterRegistrationBean<LoggingFilter> registrationBean = new FilterRegistrationBean<>(loggingFilter);
        // フィルターの順番を一番最初に指定
        registrationBean.setOrder(Integer.MIN_VALUE);
        // url-patternを指定
        registrationBean.addUrlPatterns("/*");
        return registrationBean;
    }

TODO 5-11

SecurityConfigクラスは、Spring Security関連の設定を記述しています。 Spring Boot 2.0からは、Security関連の設定はJava Configで記述するため、このクラスのほとんどの設定が必要です。 ただし、@ComponentScanのみ不要のため、削除してください。

TODO 5-12

logback.xmlは、Logback関連の設定を記述しています。 Spring Bootでは、ログの設定はすべてapplication.propertiesに記述するため(次のTODO)、logback.xmlはファイルごと削除してください。

TODO 5-13

application.propertiesに、ログレベルなどの設定を記述します。 下記を追記してください。

logging.level.org.springframework.jdbc.core.JdbcTemplate=debug

TODO 5-14

Applicationクラスのmain()メソッドを実行してください。 ブラウザから http://localhost:8080/ を開いて、01-spring5と同様の挙動であることを確認してください。 確認後は、アプリケーションを停止してください。

Spring Bootで作成したWebアプリケーションには、コンテキストルート(01-spring5の/sample)は有りません。 (application.propertiesで任意のコンテキストルートを付ける設定を記述することもできます)

Well done!

これで演習5は完成です。 次の演習はtodo-6.mdに書かれています。