HackToTech

Hack To Technology

spring-boot

SpringBootで@Repositoryがついたクラスのメソッドから投げられた例外を変換して投げ直す

個人的な備忘録 レイヤードアーキテクチャでアプリケーションを作っていて、 賛否両論あると思うがドメイン層のバリデーションを作成時とDBからの再構成時にチェックしていて、 作成時は例外をそのまま投げたいが、再構成時はそうしたくないと思っていたので…

LocalVariableTableParameterNameDiscovererが削除されてAutowireに失敗するようになった話

github.com SpringBootを3.2.0に上げた際に、 同じ型のBeanを定義していて、名前による(Qualifierではない)Autowireが失敗するようになってしまったので、それの備忘録 とりあえず複数のBeanがマッチするところまでの話は以下の記事に書いてるので端折る www…

SpringBootでAutowireする際に複数のBeanがマッチした際の挙動をみたのでメモ

雰囲気で挙動を理解していたのをちゃんと見たのでメモ spring.pleiades.io @Nullable public Object doResolveDependency(DependencyDescriptor descriptor, @Nullable String beanName, @Nullable Set<String> autowiredBeanNames, @Nullable TypeConverter typeCon</string>…

@Configurationで@Beanを宣言した際に誰がどう登録しているのかを見てたのでメモ

詳しく書いてあるところが見当たらなかったので単にコードを追った 完全に個人的なメモ tl;dr 最終的に DefaultSingletonBeanRegistry で持ってそう spring.pleiades.io バージョン Spring Boot 3.1.5 Spring Framework 6.0.13 コード data class Example(va…

SpringBoot + KotlinでListの要素にConstraintsをかけたかった話

tl;dr コンパイラオプションに -Xemit-jvm-type-annotationsを指定する必要がある あとの文章は個人的なメモ リストの要素にConstraintsをかけたかったが、 なんか一見正しく見えるのに正しく動かなかった package com.example.exampleboot3 import org.hibe…

APIの権限チェックに@PreAuthorizeを使うのをやめた話

tl;dr @PreAuthorize と @Valid を同時に使用した場合に、評価の順番に対して直感的にはわかりづらい問題がある Issueとしては↓があたるが、 要はコントローラーのリクエストハンドラーの変数の評価よりもあとに @PreAuthorize の評価がされる為、 本来であ…

SpringでRollbackされた時に別トランザクションでデータの保存をしようとしてたのでメモ

大まかなコードのイメージ package com.example.app.application import com.example.app.domain.Sample import com.example.app.domain.SampleRepository import org.springframework.aop.framework.AopContext import org.springframework.stereotype.Serv…

SpringBootでTomcatの特定のValveを削除する

タイトル通り あんまり使い道はないと思われるが、ちょっと簡単に削除が出来るのか気になったので個人的なメモ 消すのはRemoteIpValve 設定の話はこの辺 バージョン SpringBoot(2.7.5) # application.properties server.tomcat.remoteip.protocol-header=x-f…

CVE-2022-45143周りを見たのでメモ

https://lists.apache.org/thread/yqkd183xrw3wqvnpcg3osbcryq85fkzjjvn.jp 仕事していて話題にあがったので暇つぶしがてら見てみた とりあえず素のtomcatで試す conf/server.xmlを書き換える(関係ない箇所は省略) <Server port="8005" shutdown="SHUTDOWN"> <Service name="Catalina"> <Engine name="Catalina" defaultHost="localhost"> </engine></service></server>

Spring Bootのエラーページ周りを色々見たのでメモ

Spring bootを仕事で使っていて、 server.error.whitelabel.enabled を指定すると具体的にどうなるのかとか、 誰がどうレスポンスを生成しているのかとか、 この辺イマイチ浅い理解をしていてちゃんと説明出来そうにないのでちゃんとデバッガを動かしながら…