java

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

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

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

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

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

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

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. 組み込みサーバでその…