Mapstruct Spring Extensions を試してみる
   3 min read
はじめに MapStruct の公式サイトを見ていると、 Mapstruct Spring Extensions なるサブプロジェクトが発足していたので、何者か調べようと試してみました。 結果、これは Spring の ConversionService の Converter と MapStruct
Spring Boot の CORS 設定を全許可する
   1 min read
How to configure CORS in a Spring Boot + Spring Security application? - Stack Overflow Spring Boot のリファレンス 4.7.1. The “Spring Web MVC Framework” > CORS Support を見ると、次のように設定すれば良いように見え
Spring Sessionをインメモリで利用する
   1 min read
What should be a replacement for StoreType.HASH_MAP in spring-boot 2 昔は spring.session.store-type の選択肢に hash_map というものがあったようですが、現在は存在しません。(ちなみに none は Spring Session を利用しない、という意味になるよう
Spring Boot 2.4.1->2.4.2アップグレードで発生した問題メモ
   1 min read
Spring Framework 5.3.3 で対応された Update OncePerRequestFilter.isAsyncDispatch to use HttpServletRequest.getDispatcherType() #26282 コード差分 の影響で、 HttpServletRequest#getDispatcherType() メソッドが呼ばれるようになっています。 これにより、 HttpServletRequest をモック化して実行していたテストケー
openapi generator を Spring Boot で利用してみる
   2 min read
今回の成果物 https://github.com/yukihane/hello-java/tree/master/spring/openapi-sample 設定 build.gradle openapi-generator-gradle-plugin spring generator 辺りを参考にしています。 build.gradle plugins { id 'eclipse' id 'org.openapi.generator' version '4.3.1' } ext { openApiOutputDir = "$rootDir/build/generated/openapi" } sourceSets.main.java.srcDirs += ["$openApiOutputDir/src/main/java"] dependencies { // これらは自動生成クラスが import しているので必要 implementation 'org.springframework.boot:spring-boot-starter-validation'
`WebClient` の 覚書
   1 min read
RestTemplateBuilder の Bean がsingleton-socpeかつちょっと変態的なインスタンス生成を行っていたので驚いた、というエントリを昔書きました: RestTe
Spring Boot で Controller と Repositoryを同じクラスで併用する
   1 min read
…なんてことができたんですね。こんなコード: @RestController @Repository public interface VehicleInterface extends JpaRepository<vehicle, Long> { @Query("select u from vehicle u where u.year = :year") @RequestMapping(value = "/vehicles", method = RequestMethod.GET) List<vehicle> findByYearEquals(@Param("year") Integer year); } http://localhost:8080/vehicles?year=2010 的なURLでアクセスします。 サンプル
Spring-BootでJSPを使う
   1 min read
https://start.spring.io/ で depencencies に Spring Web を追加して生成します。 生成された pom.xml に次の依存関係を追加します: pom.xml <dependency> <groupId>org.apache.tomcat.embed</groupId> <artifactId>tomcat-embed-jasper</artifactId> </dependency> <dependency> <!-- 必要に応じて --> <groupId>javax.servlet</groupId> <artifactId>jstl</artifactId> </dependency> appliction.properties に次を追加します: application.properties spring.mvc.view.prefix=/WEB-INF/view/ spring.mvc.view.suffix=.jsp src/main/webapp/WEB-INF/view/ の下
${...}と#{...}の違い
   1 min read
Spring Expression Language (SpEL) with @Value: dollar vs. hash ($ vs. #) より。 ${…​} は単なるプロパティのプレースホルダ。 #{…​} は Spring Expression Language(SpEL) の構文。 プレースホルダは置き換えるだけだけれど
RestTemplateBuilderに関する覚書
   2 min read
RestTemplateBuilder RestTemplate は Spring Framework(spring-web)だけれども RestTemplateBuilder は Spring Boot。 Java の世界の なんちゃらBuilder (StringBuilderと
Spring Boot のプロパティではkebab-formatが推奨されている
   1 min read
Relaxed Binding 2.0 という仕組みにより spring.jpa.database-platform=mysql spring.jpa.databasePlatform=mysql spring.JPA.database_platform=mysql いずれの形式でも正しくバインドできる。 が、公式ドキュメントからは一番上の database-platform が推奨されているように読み取れる。 Relaxed
MockMvc でURLエンコード済みのpathを渡したいときは new URI(...) を引数にする
   1 min read
OAuth2.0 の redirect_uri をゴニョった実装をテストしたいときにハマった。 mockMvc.perform(get(new URI("/line/oauth/authorize?redirece_uri=https%3A%2F%2Fexample.com") ってやらないと二重にエンコードされてしまう。 参考 MockMvc needs to accept prepared URI with encoded URI path variables [SPR-11441] #16067 EncodedUriTests.java
LINE Messaging API を試してみる
   2 min read
準備 Spring Boot セットアップ https://start.spring.io/ でテンプレートを作成して次の依存関係を追加します。 <dependency> <groupId>com.linecorp.bot</groupId> <artifactId>line-bot-spring-boot</artifactId> <version>2.7.0</version> </dependency> リポジトリ: https://github.com/line/line-bot-sdk-java/tree/master/line-bot-spring-boot Heroku セットアップ 今回は linebotbeta というアプリケーション
h2-consoleとspring-boot-starter-securityと私
   1 min read
概要 spring-boot-starter-security を導入しても http://localhost:8080/h2-console にアクセスしたかった。 作業結果: https://github.com/yukihane/hello-java/tree/master/spring/h2-console-spring-security-example 手順 h2-console が使える依存関係を追加してプロジェクトセットアップ 8113d7 1 2 3 4 5 6 7 8 9 10 11 12 13 14
text/plain で JSON を投げつけてくるヤツに対処する
   1 min read
RestTemplate でレスポンスの Content-Type を変更する。 の別解。 @Autowired private RestTemplateBuilder builder; ... final MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter(); converter.setSupportedMediaTypes(Arrays.asList(MediaType.TEXT_PLAIN)); final RestTemplate restTemplate = builder.additionalMessageConverters(converter).build(); ちなみに上記のようにコンバータを明示的に設定しない場合だと次のような