タイガー!タイガー!じれったいぞー!(SE編)

AS400, Java, JavaEE, JSF等の開発、習慣など。日々の気づきをまとめたブログ(備忘録)

【Java】Java独自共通ライブラリーのログ書き出し問題についてのその後

前回、「Java共通ライブラリー内でSLF4J+logbackを使ってハマったこと」という内容の記事を書きました。

tigertaizo.hatenablog.com

その時は、「SLF4J: Class path contains multiple SLF4J bindings.」や「Resource [logback.xml] occurs multiple times on the classpath.」の警告メッセージと格闘し、最終的に「Resource [logback.xml] occurs multiple times on the classpath.」は出力されるけど、想定通りに動くから「ま、いっか!」とフタをしてしまいました。

しかし、少し時間を置いて考えてみたら、別な方法で解決できたのでまとめておきたいと思います。

改善前

f:id:no14141:20200215115034j:plain

こちらが改善前の状況です。

独自Commonライブラリーは、一般的なユーティリティ(ex: StringUtils, DateUtils)が格納されています。 そこに「営業日確認」メソッドなど、直接実行できるようにしていたのでした。

つまり、独自Commonライブラリーは、実行可能なJARファイルということです。

その結果、図の通り、「logback.xml」が2つ必要になり、用途側では「Resource [logback.xml] occurs multiple times on the classpath.」の警告が吐き出されていたわけです(当然ですね)。

改善後

下記の図が、今回採用したものです。

f:id:no14141:20200215115044j:plain

独自Commonライブラリーを直接実行できないものに改変し(実行可能なJARでは無くなりました)、単なるユーティリティ集としました。

それから、その独自Commonライブラリーを含めたJava Applicationを新規に作成しました!(用途Bのアプリ)

つまり、独自Commonライブラリーを標準的な使い方にしたことで、前回の問題があっさり解決できたというわけです。

基本に従え!! ただただそれだけです。

改善前と完全後の図を見比べてもらえば、改善後の方が美しい形をしていると言えましょう!!

まとめ

今回の学びは、ズバリ次の2つです。

  • 原理・原則に従った制作を心がける。
  • 悩んだときは、一度そこから離れてみる。それからスッキリしたところで冷静に考える。

まさに人生訓と同じですね。