2021-11-01から1ヶ月間の記事一覧

mybatis で、後からマッパーを追加する。

既に生成済の SqlSession に対して後から SQL mapper を追加する方法 (設計として悪いので勧められない)セッションが持っている マッパーレジストリにマッパークラスを追加する。 import org.apache.ibatis.binding.MapperRegistry; import org.apache.iba…

Jackson CamelCase フィールドで、UnrecognizedPropertyException

Jackson で、次のような JSON をデシリアライズすると UnrecognizedPropertyException が発生 { "firstName": "太郎", "lastName" : "山田", "uId": "A001" } import lombok.Data; @Data public class UserInfo{ private String firstName; private String l…

mybatis の短い SqlSession の生成方法

設定コンフィグXML がある前提で、、 org.apache.ibatis.io.Resources を使用して、 import java.io.IOException; import org.apache.ibatis.io.Resources; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFacto…

Java コード上で環境変数をセット

環境変数の取得は、System.getEnv(String) でも、setEnv など System には存在しない。 Java コード上から環境変数をセットしなければならないケースなんて、そうそうないのだけれど。。。参考は、How do I set environment variables from Java? - Stack Ov…

Maven ビルド実行前にファイルコピー

過去にこんな投稿をしていた。。。 Maven ファイルのコピー - Oboe吹きプログラマの黙示録 そして、gradle 使用では、、、 gradle の copy タスク活用 - Oboe吹きプログラマの黙示録Maven の方、、ビルド前、package や install タスクの前に実行したいとい…

static 変数へのインジェクション

Google guice は、通常のインジェクションの方法では、static 変数へのインジェクトはされない。ただし、Module の configure で、インジェクトしたい static 変数をもつクラスを以下のように指定すれば、requestStaticInjection(Class);可能ではある。Googl…

インターセプターでメソッドアノテーションの状況を取得

Google guice インターセプターでメソッドに付与されたアノテーションの状況を取得する。例えば、javax.inject.Named により、@Named("ABC") とメソッドに付与された場合で インターセプター側でこの Named で付与した文字列を受け取る。import org.aopallia…

Google guice Matchers の OR

Google guice の AOP インターセプターバインド定義で使用される Matchers には、 OR で一致を判定するものを提供していません。 com.google.inject.matcher.Matchers の static メソッドの一覧 any() 全て無条件に一致 only(Object) 指定するObjectに限定eq…

guice のAOPで使う Matchers のアノテーション一致を自作する

@Named 付与の判定は、Google guice の Module 定義をする時に、 Names.named スタティックメソッドを良く使います。 guice AOP でインターセプターを定義するときも、クラスやメソッドの Matcher には、 Matchers という マッチ検証をする static メソッド…

Eclipseプロジェクト、既存Mavenプロジェクトを強制的にMavenモジュールにする方法

親になるpom で定義したMavenプロジェクトに子のMaven モジュールを作成するのは、 通常の方法では、親になるMavenプロジェクトを選択して右クリック [Maven]→「新規 Mavenモジュール・プロジェクト」を選択して作成していく。 既にある Mavenプロジェクトを…

@ImplementedBy について

Google guice の @ImplementedBy に対して、筆者は使用を避けてきた。 なぜなら、インターフェース宣言でこの @ImplementedBy( 実装クラス名.class ) は、 Injector (com.google.inject.Injector) で、約束する Module(com.google.inject.Module)で、 @Imp…

Python で JSON をマージする方法と、Java(Jackson使用)でマージする方法

Python Python で JSON をマージするのに誰でも思いつく簡単な方法は、 JSON を辞書(dict)として読みこんで、dict(dict1, **dict2) の方法でマージする方法である。 簡単なサンプル import json j1 = ''' { "a": 1, "ary": [ 10, 11 ], "b":{ "b1": 20 } }…

Python で書く synchronized

先日、投稿したPython で書くシングルトンに続いて、 synchronized メソッド threading の Lock を使って書く。シングルトンのメソッドを synchronized にするモデルが適していると思う。 utility.py import threading def singleton(cls): instances = {} d…

Python でシングルトンを作る

Java だったら、private コンストラクタにした final クラスで synchronized の static メソッドでインスタンス取得する お決まりの実装だけど、Python はいくつか方法がある。getInstance() というメソッドでインスタンス取得させる方法 # -*- coding: utf-…

MySQL のJSON 型を扱うSQL

SQL

サンプル、 DELIMITER // DROP TABLE IF EXISTS sakila.t_item // CREATE TABLE t_item( id INT NOT NULL AUTO_INCREMENT , name VARCHAR(40) NOT NULL , message JSON DEFAULT NULL , PRIMARY KEY (id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_…