Java

Eclipse で apt-maven-plugin が動かない場合の対処

QueryDSL の apt-maven-plugin が動かなくてハマったのでメモ。 現象 もともとなんの問題もなく動いていた apt-maven-plugin が何かの拍子に突然動かなくなりました。 target/generated-sources/java 以下に保存時に QueryDSL の自動生成クラスを作ってくれ…

Thymeleaf3 + JavaScript で条件分岐

いつも忘れるのでメモ。Thymeleaf3 では以下のように書くことで JavaScript 内で条件を指定して表示の切り替えができます。 JSP における c:if 的なやつ。 /*[# th:if="${hogehoge}"]*/ alert('ほげ'); /*[/]*/ 参考。 [MAJOR FEAT] New syntax for textual …

Java の enum のコンストラクタで例外を投げてはいけない

Effective Java に書かれている通り、 Java でシングルトンを作りたい場合は単一要素の enum を作成するという方法があります。そんでまぁ結構気軽に enum を使っていたんですが、コンストラクタで例外が発生しうるような実装にしてしまうと辛いということに…

Spring Boot で複数のログイン画面を使う

会員用のログイン画面と管理画面用のログイン画面を分けるみたいな場合に、 Spring Boot ( Spring Security )でどうやればいいのか手探りで調べたのでメモ。よくありそうな話ではありますが、意外と情報がなかった。 注意 remember me を有効にするとこの…

Template Method パターンを使うならちゃんと使おう

Template Method パターンは差分プログラミングなんかを行う上でわりと便利なこともありますが、使ってるつもり?で使えていない場合を見かけたりします。たとえばこんな感じ。 スーパークラス public abstract class AbstractClass { // サブクラスを判別す…

Java でダブルディスパッチを使ったちょっとした例

今朝 Twitter で Visitor パターンによるダブルディスパッチの話題を見かけたので、そういや昔 Java でちろっと使ったことあったなーとどんなんだったか思い出してみました。 要件 確かこんなのを表現したかったんです。業務アプリでよくありがちな、業務実…

Maven プロジェクトで lombok が動かない場合

昔作った Maven web アプリケーションにクラス追加する際、いちいちアクセッサとか書くの面倒なのでもう lombok 使ってしまおうと pom に定義追加したのに、なぜかアクセッサが生成されない、というか lombok のアノテーション全般が効いてないという現象が…

Eclipse 設定メモ

久々に Eclipse 触ったら色々設定忘れてるのでメモ。 エディターで開いたファイルを Package Explorer で自動選択 Package Explorer 右上の三角っぽいボタンから Link with Editor を選択 .vrapperrc の置き場所 Windows なら C:\Users\{username} 配下

ラムダはじめました

Java8 出ましたねー。ほんとに出るとは思いませんでした。ダウンロードは以下から。 Java SE - Downloads | Oracle Technology Network | Oracle Java8 は Java5 以来となる大きな文法の変更や機能拡張が追加されていますが、まず目を引くのはラムダでしょう…

#jjug ナイトセミナー「3大IDE頂上決戦 」に参加してきた

久しぶりに JJUG のナイトセミナーに参加してきました。勉強会は今年初かな? 【東京】JJUG ナイトセミナ 「2.19 Eclipse、NetBeans、IntelliJ IDEA 3大IDE頂上決戦 」 - 日本Javaユーザーグループ/Japan Java User Group | Doorkeeper 早速 @yamadamn さん…

JavaBeans 規約に従いつつカプセル化もしたいのですが

Java といえば JavaBeans 規約、すなわち getter/setter のウザさで有名ですが、古くは S2JDBC*1、近頃は JPA でも public フィールドが使えるようになったりして public なフィールドへの障壁が下がってきたのではないかと思います。とはいえまだまだ JavaB…

JPA2.1 の Converter を enum + コードファーストで試す

JavaEE 7 JPA 2.1の新機能コンバータ - しんさんの出張所 はてな編 を読んで、これは enum 使うときに便利や!と思ったので試してみました。あと個人的にはコードファースト*1が好きなので、コードファーストで。・・・というか、ほとんど Mapping enums don…

任意のバージョンの Java を使って Ant を実行する

メモ。Ant ビルド実行時に環境変数 JAVA_HOME に設定されているものと違うバージョンの Java を使いたい場合ってありますよね。しかしいちいち環境変数書き換えとかやってられないと思います。そういう場合は JAVACMD を設定すると良いようです。 Running Ap…

NetBeans で Thymeleaf 使う場合は HTML5 でも W3C の XML 名前空間を指定するとよい

Java でちょろっとした web アプリ作ろうと思ったんですが、テンプレートエンジン何使うかなー、というところでイケてるしヤバいという噂の、男もすなる Thymeleaf といふものをちょっと触ってみようかなと思ったらいきなりつまづいたのでメモ。 Thymeleaf T…

try-with-resources を使っても catch が不要になるわけではない・・わけでもなかった

世間は Java8 に向けて賑わっているというのに周回遅れ感が否めない Java7 ネタ。 Java7 で導入された try-with-resources で C# の using っぽい書き方できるなーと思ってやってみました。まずは C# の using 。 IDisposable を実装しているクラスであれば…

Java の方が .NET の System.IO より長いフォルダー作れる・・

System.IO.PathTooLongException の発生条件 - hd 4.0 で書いた件。.NET の System.IO.DirectoryInfo.Create() では 248 文字を超える以上のパスのフォルダーを作ろうとすると例外が飛んでくる。でも Java なら 258 文字まで作れる・・・。 @Test public voi…

JPA の Detached な Entity と Lazy Loading

今日ツイッターやら JJUG やらで id:megascus さんと JPA の話をちらっとして、なんか懐かしくなったので JPA ネタでも書いてみる。 JPA 1.0 の頃の知識なのでもしかすると古いかもしれない。JPA を使う場合、トランザクション外で Lazy Loading を行うと例…

GroovyConsole 便利

ふと適当なランダム文字列を生成したいなーとか思ったとき。Java が使えるなら commons-lang の RandomStringUtils あたりを使えばいいと思いつく。が、 jar をダウンロードしてクラスパス通したりとか呼び出しコード書いてコンパイルしたりとか色々めんどく…

interface を実装した enum のコンパイル時にシンボルが見つかりませんとか言われた

現象 interface を implements した enum を作って eclipse から Ant ビルドかけたら javac でシンボルが見つかりませんとか言われてこけた。 eclispe のコンパイルではエラー出てないのに。 環境 Jdk 1.5.0_11 Eclipse 3.6 OS WindowsXP SP3 32bit まだ 3.6…

Struts1.x の ActionForm からメッセージリソース参照したいとき

いつも忘れるのでメモ。いまさら Struts1 だけど。Action からメッセージリソースを取得したい場合は org.apache.struts.action.Action.getResources(HttpServletRequest) でいけるけど、 ActionForm では使えない。 ActionForm から同じことをしたい場合は …

NetBeans

仕事で php をちょっといじる機会があって、 php 用の IDE として NetBeans が良さげだというので使ってみた。 php のコード自体は全然触ってないんだけど、どうせなら java の開発環境としても使ってみようということで家の PC(Win7 64bit) に入れてみた。…

Spring security と Spring MVC で global-method-security

Spring MVC の controller に global-method-security でアノテーションベースのアクセス制御をかけようとしてハマったのでメモ。環境は Spring security と Spring MVC ともに 3.0.5-RELEASE 。結論からいうと web.xml で DispatcherServlet で読み込む MVC…

Javaプログラマであるかを見分ける10の質問・・だと・・

Javaプログラマであるかを見分ける10の質問 をやってみる。とりあえずカンペなしで。あぁ怖い。 1. ==演算子とequalsメソッドの違いは何か? A. オブジェクトの場合、 == はインスタンスが同じことを意味する。 equals は等価であることを示し、何をもって等…