-SpringBoot #contents *チェック [#m5d37cb2] -Slf4j -RequestBody -lombok.Data; -lombok plugin -@ComponentScan("com.rutake.app") -MapperScan -ConfigurationProperties -@Transactional *プロジェクト新規作成 [#w0bfdaa9] Spring Bootの雛形をWeb上で作成可能 http://start.spring.io/ *Document [#ya857879] http://terasolunaorg.github.io/guideline/5.3.0.RELEASE/ja/ArchitectureInDetail/WebApplicationDetail/Validation.html *特徴 [#a58f1bbe] -SpringMVCを設定レスにした感じ。 *起動 [#hc69eb91] mvn spring-boot:run ./gradlew bootRun *注意点 [#p9003978] 以下の設定だとDBデータを全部消すので、間違っても利用中のDBに向けてはいけない。 spring.jpa.hibernate.ddl-auto=create updateにしておくと消すことはない。 none何もしない。updateはentityの差分を反映。createは作成するが、消すことはない。create-dropは起動時に作成して、終了時にdropする。 *トラブル [#ib317326] MACで設定翌日にWebアプリケーションが一切起動しない(どのプロジェクトも)トラブルで死亡。原因不明。ワークスペースを変更してもダメ。 **propertiesファイル [#m465e21d] application.propertiesに設定が必要だった。あとリソースファイルもクラスパスにないとだめ。全自動でできるのかは要調査! **検索対象のパッケージ [#p8837014] デフォルトやデモだと同じパッケージを検索する。 サービスには@ComponentScan("パッケージ名") -componentの探し方 http://yyama1556.hateblo.jp/entry/2016/08/10/175948 *設定 [#jdf4899f] **application.propertiesとapplication.yml [#n684580b] +src/main/resources/config/application.ymlがあるとそれを優先。 +src/main/resources/application.propertiesが次に利用されるが、同じ項目がある場合は無視される。 ***application.yml [#p0cd9892] server: port: 9020 spring: datasource: url: jdbc:mysql://mysql.example.com/test username: User password: Password driverClassName: com.mysql.jdbc.Driver jpa: hibernate: ddl-auto: update - http://takayukii.me/post/201704041080 *Spring Boot Batch [#i3b1d995] デフォルトでは@SpringBootApplicationが存在するパッケージ以下を検索する。それ以外のパッケージにRepositoryがある場合は@EnableJpaRepositories and its type-safe basePackageClasses=MyRepository.class parameter.を利用する。 *Spring DATA [#w47d037c] http://qiita.com/tag1216/items/55742fdb442e5617f727 **トラブルを防ぐために [#webf32a2] -RequestParamを設定している場合はパスが一致しているだけではなく、パラメータも与える必要がある。合わないと404になる! -アソシエーションにいきなりチャレンジするのではなく単体で成功させるべし -メソッド追加時はパラメータの数が一致していないとわけのわからないエラーとなる。これまた一気に複数あると大変なので成功するシンプルなものから増やしていく -アソシエーションはきちんとキャメルケースになっていないとこれまたわけのわからないエラーとなる(一括置換ではまった) -アソシエーションがあるとデータを全部持ってこようとするので、無効にしたいができるのか? **SQLログ出力 [#j0f784c2] # for logging logging.level.org.hibernate.SQL=DEBUG logging.level.org.hibernate.type.descriptor.sql.BasicBinder=TRACE *Thymeleaf [#ta74fc65] **Tips [#j436a197] |エスケープしない|th:utext| **Enum出力 [#lae7bea9] <select> <option th:each="state : ${T(com.rutake.enums.Direction).values()}" th:value="${state.value}" th:text="${state.label}"> </option> </select> #counter