java

Spring Boot 2 アップグレード後に JPA ( Hibernate )が勝手に SEQUENCE を使おうとする問題

問題 Spring Boot 1.5 -> 2.0 に上げたとき MySQL を JPA (Hibernate)経由で利用している場合、 GeneratedValue に AUTO を指定していると INSERT 処理時などに下記のような例外が発生する可能性がある。 Exception: com.mysql.jdbc.exceptions.jdbc4.MySQ…

Spring Boot で Gzip を使ってレスポンスを返す

概要 nginx などの web server では静的ファイルなどを gzip で返すとパフォーマンスがよくなるよーという記事は良くみる。 これを Spring Boot で行うにはどうすればいいか。(アプリケーションから gzip で返す必要性が発生するのかというのは別の話) 設…

ConditionalOnClass を使うライブラリを書いたときにハマったことメモ

概要 Spring Boot の機能として auto configuration を作る Spring Boot ライブラリを作成する場合に、特定のライブラリが読まれているときのみ動く設定などを使いたい場合がある。そういう場合に ConditionalOnClass アノテーションを使うだろうと思う。(…

spring.properties 相当のファイルを増やす

概要 共通モジュールとそれを利用するモジュールを、同一 gradle プロジェクト内で開発したいときなど 共通モジュール用と利用側モジュールでそれぞれ設定ファイルを書きたい場合がある。 Spring Boot の設定について Spring Bootでは 設定(プロパティ)を …

Mockito でモックオブジェクトを初期化する

環境 Junit 4 Mockito 2.8.9 内容 Mockito の Mock アノテーションを使ってモックを使ったテストを書きたい場合、 モックオブジェクトを初期化する処理を入れる必要がある。方法は調べた限り3つある様子。 Mock (Mockito 2.8.9 API) MockitoAnnotations.ini…

spring で logback を使う際に application.yml の値を使う

https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-logging.html#_environment_properties The <springProperty> tag allows you to surface properties from the Spring Environment for use within Logback. This can be useful if you want </springproperty>…

Gradle で SNAPSHOT バージョンのライブラリを使う場合は --refresh-dependencies をつける

開発バージョンとして -SNAPSHOT を付けたものを gradle プロジェクトで利用している場合、なぜかいつまでたっても新しくアップロードした SNAPSHOT のバージョンを使ってくれない問題があった。 SNAPSHOT バージョンは下記のように maven で開発中のバージ…

Jackson で OffsetDateTime を ISO8601 形式にシリアライズする

JavaTimeModule を使って シリアライズする場合に OffsetDateTime などが変な数字になる場合がある。 @Data class MyObject { @JsonProperty("datetime") private OffsetDateTime dateTime; } ObjectMapper mapper = new ObjectMapper(); objectMapper.regis…

HttpComponents で JSON レスポンスをオブジェクトに変換して取得する

チュートリアルに書いてあるとおり ResponseHandler を使うと HttpClient#execute() の返り値を特定のクラスにして返すようにできる。これを jackson を使って返すようにしてみた。 http://hc.apache.org/httpcomponents-client-4.5.x/tutorial/html/fundame…

javadoc の html を生成したときに一番最初のページに説明を追加したい

Java Platform SE 8 例えば下記の「このドキュメントはJava(tm) Platform, Standard EditionのAPI仕様です。」と書かれてるようなところ。 下記ページをみると「概要コメント・ファイル」と呼ぶらしいファイルを使うことができればよいらしい。 通常は -over…

JUnit でテスト全体の実行前および実行後の処理を書く

例えば DB を実行する前や後に初期化する場合など BeforeClass や AfterClass よりももっと大きな単位で JUnit テストの前と後で実行したいことがある場合。 org.junit.runner.notification.RunListener を使う。 package my.hogehoge; import org.junit.run…

Intellij IDEA でクラスを作る際に自作のテンプレートを使う

使用バージョン Intellij IDEA 14.1.3 内容 競技プログラミングなどでファイル生成時に標準入力用ライブラリなどを最初から入れておきたい場合があります。 Intellij IDEA の場合はどうするか。 テンプレートを用意する クラス生成時に用意したテンプレート…

Spring boot 日記

Q. EnableAutoConfiguration って? A. どうも設定が必要なパラメータを予めデフォルト値を持った設定群をフレームワークで持ってるっぽいのでそれを使うようにするアノテーションらしい。 自分のアプリケーションでのみ使う設定はその設定のプロパティとか …

Spring Boot で複数の Filter を定義する

例えば下記のように @Bean アノテーションを複数書くことによって複数のフィルタを追加できる。 @Configuration public class WebConfig extends WebMvcConfigurerAdapter { @Bean public Filter filter() { return new SomeServletFilter(); } @Bean public…

Spring Boot で組み込みサーブレットコンテナを変更する

Spring Boot で 1.2.3 をそのまま起動した場合は Tomcat 8 が起動する。 s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat initialized with port(s): 8080 (http) o.apache.catalina.core.StandardService : Starting service Tomcat org.apache.catalin…

Spring Boot 軽く触ってみた感想日記

そもそも Spring Framework 使ったこと無い人なのでまあそこも含めての疑問と理解してる途中の内容とかメモ。 Q. Spring Boot って? A. Spring Framework 使ったアプリを組み込みサーバ上で動かすみたいな仕組みの総称みたいな理解 Q. 組み込みサーバでその…

AojCoder なる Eclipse プラグインを作ってみた

AojCoder なる Eclipse プラグインを作ってみた.AOJ http://judge.u-aizu.ac.jp/onlinejudge/EclipseCoder をパクった感じのネーミングにしたほうがわかりやすいかと思ったけどよく考えたら Topcoder -> EclipseCoder なのに AojCoder としたら意味わからな…

Atcoder Regular Contest #003

A - GPA計算 問題:http://arc003.contest.atcoder.jp/tasks/arc003_1# import java.util.*; public class Main { public static void main(String[] args) { Scanner s = new Scanner(System.in); int n = s.nextInt(); char[] cs = s.next().toCharArray()…

GoogleCodeJam2012 1B A "Safety in Numbers"

問題: https://code.google.com/codejam/contest/1836486/dashboard#s=p0最低点の人が複数入れば最低点の人がeliminatedされないということだったので2人以上で同じ最低点になるように計算してった. import java.util.Arrays; import java.util.Comparator…

AtCoder Regular Contest #002

A - うるう年 問題: http://arc002.contest.atcoder.jp/tasks/arc002_1 import java.util.*; public class Main { public static void main(String[] args) { Scanner s = new Scanner(System.in); GregorianCalendar c = new GregorianCalendar(); c.setGre…

GoogleCodeJam2012 1A B "Kingdom Rush"

問題: https://code.google.com/codejam/contest/1645485/dashboard#s=p1&a=1レベルごとにレート1とレート2のふたつ段階があって,それぞれのレベルにおけるレートに挑戦するのに必要な星の数な数が決まっている.それぞれのレベルのレートによって手に入…

Codeforces April Fools Day Contest D "Broken checker"

問題: http://codeforces.com/contest/171/problem/D1から5の数字が与えられるので1から3の間で数字を返す.トライアンドエラー.数字上は6回だけどケース1で落ちてるのを含めるともう少しやった. import java.util.*; public class D { public static void…

Codeforces April Fools Day Contest B "Star"

問題: http://codeforces.com/contest/171/problem/B数字が与えられるので答えを求める.問題ページにある図のように増えていくとすると,周囲長は12個ずつ増えてゆくので,12個増えた周囲長を足しあわせてゆく. import java.util.*; public class B { publ…

Codeforces April Fools Day Contest A " Mysterious numbers - 1"

問題: http://codeforces.com/contest/171/problem/A数字が2つ与えられるので答えを求める.2番目の数字を逆順にして1番目の数字と足すと答えになる. import java.util.*; public class A { public static void main(String[] args) { Scanner s = new Sca…

Topcoder SRM 538 div2 easy "LeftOrRight"

問題: http://community.topcoder.com/stat?c=problem_statement&pm=11738&rd=14729 (要ログイン)命令列が与えられる.右か左にゆくと命令するロボットがあり,与えられた命令列の順番で命令を実行する,右と左以外にもどちらでもすすめる記号が与えられる…

CTPC C "Communication Tool"

問題: http://www.atcoder.jp/problem/detail/153なぜかショートコーディングっぽいことしてた。304B import java.util.*;class Main{public static void main(String[]z){int t=-1,r=0,n;String x;for(Scanner s=new Scanner(System.in);s.hasNext();)if((x…

CTPC A "Average"

問題: http://www.atcoder.jp/problem/detail/151なぜかショートコーディングっぽいことしてた.230B import java.util.*;class Main{public static void main(String[]z){Scanner s=new Scanner(System.in);int a[]=new int[4],i=0;for(;i<4;++i)a[i]=s.nex…

Hos' Xmas Contest 2011 H "output"

問題:http://atcoder.jp/problem/detail/139部分点だけもらえるコード. import java.math.BigInteger; import java.util.*; public class Main { public static void main(String[] args) { Scanner s = new Scanner(System.in); String line = s.nextLine…

Hos' Xmas Contest 2011 E "accepted"

問題:http://atcoder.jp/problem/detail/136 public class Main { public static void main(String[] args) { Scanner s = new Scanner(System.in); int n = s.nextInt(), l = s.nextInt(), c = 0; for(int i = 0; i < n; ++i){ if(s.next().equals("accept…

Hos' Xmas Contest 2011 B "shortest path"

問題:http://atcoder.jp/problem/detail/133 import java.util.*; public class Main { public static void main(String[] args) { Scanner s = new Scanner(System.in); int n = s.nextInt(), m = s.nextInt(); long d = s.nextInt(); int st = s.nextInt(…