- 追加された行はこの色です。
- 削除された行はこの色です。
-SpringBoot
#contents
*チェック [#m5d37cb2]
-Slf4j
-RequestBody
-lombok.Data;
-lombok plugin
-@ComponentScan("com.rutake.app")
-MapperScan
-ConfigurationProperties
-@Transactional
-RestTemplate
-springfox-swagger2
-@ConditionalOnBean(HogeProperties.class)
-@ConditionalOnProperty("hoge.fuga")
-Stream.of(args).anyMatch(StringUtils::isBlank);
-@PreAuthorize("permitAll()")
-com.jaredsburrows:gradle-license-plugin
-@ExceptionHandler
-@ExceptionHandler & @ResponseStatus(HttpStatus.BAD_REQUEST)
-ModelMapper
-Pageable Page<Emp> page = repository.findAll(new PageRequest(3, 3));
**properitiesのConfigへの読み込み [#gf420c4e]
@Bean
@ConfigurationProperties(prefix = "myprop.hoge")
public HogeProperties hogeProperties() {
return new HogeProperties();
}
-application.yml
myprop:
hoge:
prop1: prop1
*環境の切り替え [#n7c9d394]
java -jar spring-boot-config-0.0.1-SNAPSHOT.jar --spring.profiles.active=production
*プロジェクト新規作成 [#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]
設定ファイルではスネークケースもキャメルケースもチェーンケース(driver-class-name)もOK
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