エキサイト株式会社の中尾です。 SpringBootでexceptionが発生したとき、特定のエラーレスポンスで返す方法を記載します。 以下、コードになります。 @RestControllerAdvice @Slf4j public class ExceptionController { @ExceptionHandler({BadRequestExcept…
ご無沙汰しています。株式会社エキサイトの中尾です。 sql serverの本番のデータベースの定義をローカル環境のdockerに再現する際に罠にかかったのでその内容を記載します。 なお、復旧にはflywayを使用します。 やりたいことは以下です。 ローカル環境にsql…
こんばんは。エキサイト株式会社中尾です。 gradleからjibを実行する時引数でいろいろ指定すると思いますが、めんどくさいですよね? ※例ではspring.profiles.activeしか指定していません。 ./gradlew jib -Djib.container.args=--spring.profiles.active=de…
エキサイト株式会社 メディアサービスエンジニアの中尾です。 前回に続いてModelMapperのちょっとした内容を説明します。 現場ではほとんど使うことはないと思うので、「こんなこともできるんだ」ぐらいでお願いします。 コードは以下になります。 @ExtendWi…
エキサイト株式会社の中尾です。 effective java を最近読んでいて、気になった部分を自分でコーディングして理解を深めようと思っています。 その一部を紹介します。 public class Main { public static void main(String[] args) { System.out.println("元…
エキサイト株式会社の中尾です。 今回はModelMapperのよく使われるオプションについて、説明します。 以下の例は、userIdを別のモデルにマッピングします。 userIdからuserIdなのでもちろんテストは通ります。 @ExtendWith(MockitoExtension.class) public c…
エキサイト株式会社 メディア事業部エンジニアの中尾です。 SQL Serverからデータを取得し、redisにデータをキャッシュさせようとしたら以下のエラーが出ました。 Could not write JSON: Java 8 date/time type `java.time.LocalDateTime` not supported by …
エキサイト株式会社 メディア事業部エンジニアの中尾です。 rest-high-level-clientのようなライブラリではなく、restTmeplateでElasticsearchに問い合わせる方法を説明します。 https://mvnrepository.com/artifact/org.elasticsearch.client/elasticsearch…
エキサイト株式会社 メディア事業部エンジニアの中尾です。 最近はSQL Serverを使うことが多いので、SQL Serverでよく使われているwith(NOLOCK)の挙動について説明できたらと思います。 with(NOLOCK)とは 簡単にいうと、トランザクションレベルを強制的にREA…
エキサイト株式会社 メディア事業部エンジニアの中です。 SpringBootでUTをやる方法をいくつか紹介しましたが、、、実際にはどこまでやればいいんだろうと、ちょっとポエムを記載します。 tech.excite.co.jp tech.excite.co.jp tech.excite.co.jp tech.excit…
エキサイト株式会社 メディア事業部エンジニアの中です。 SpringBootでRestTemplateを使った外部APIを実行している実装をテストする方法を記載します。 やり方は単純で、mockitoを使います。 ユースケース RestTemplateを使った外部APIを実行している実装を…
エキサイト株式会社 メディア事業部エンジニアの中です。 今回はjson diffを簡単にできる方法を記載しようと思います。 例えば、以下のようなjsonが2種類あったとします。 { "userId": 1, "id": 1, "title": "naka", "body": "sho" } { "body": "sho" "title…
エキサイト株式会社 メディア事業部エンジニアの中です。 SpringBootでmybatisで発行したSQLのテストのやり方を記載します。 H2というin-memoryデータベースを用意し、schema.sql、data.sqlの初期データを挿入してから、SQLを発行し、正しくデータが取得でき…
エキサイト株式会社の中です。 Java Spring BootでControllerのJSONの送信と受信のテストをする方法を説明します。 ユースケース Controllerのテストをする。 2.受け口をPostにする。 3.Jsonパラメータを送信する 4.Jsonパラメータを受信する 題材 コード例 …
エキサイト株式会社 メディア事業部エンジニアの中です。 カスタムバリデーションと@NotEmptyをつけてユニットテストする際、nullを設定すると NullPointerExceptionが発生することがあります。 理由は@NotEmptyと@CustomValidateの2回チェックが通るため、 …
エキサイト株式会社の中です。 Spring Bootでpropertyの値を取得する時、@Valueで取得すると思います。 @Valueは外部から値を注入しているので、UTをする時mockを設定しなければなりません。 ReflectionTestUtilsを使って設定する方法を説明します。 @Servic…
エキサイト株式会社の中です。 Java Spring Bootでcontrollerのテストをする方法を説明します。 ユースケース controllerのテストをする。 Cookieを設定する 題材 コード例 @GetMapping("cookie") public String showCookies( @CookieValue(name = "naka", r…
エキサイト株式会社の中です。 Spring BootでCookieの値を取得する時、Controllerで @CookieValue(name = "hoge", required = false) String hoge で取得できると思います。 しかし、Stringで受け取る際、勝手にURLデコードされて困る場合があります。 そこ…
エキサイト株式会社の中です。 SQL Serverをローカル環境に用意するのにハマったことを記載します。 ユースケース SQL Serverを使ったローカル開発をしたい。 test環境のデータを、ローカル環境に復元したい。 題材 docs.microsoft.com 1のみの場合、手順通…
エキサイト株式会社の中です。 最近Javaで大量の文字列を一括置換する処理作ったので紹介します。 性能部分にちょっと不安がありますが。。。 wikipediaでも自動で特定のワードに対してリンクになりますが、イメージはあんな感じです。 ユースケース 特定の…
初めまして エキサイト株式会社の中です。 最近Javaを書くことが多いので、学んだことを記載していこうと思います。 よろしくお願いいたします。 MyBatisでデータソースを切り変える 弊社では、データベースとJavaを繋ぐlibraryにMyBatisを使用しています。 …