私は平等なJavaコード(Beanまたはコンテナフレームワークなし)を開発しており、@PostConstruct
/@PreDestroy
の機能を実現したいと考えていました。それは可能ですか?PostConstructをPlain Javaで使用する方法
実現可能性を確認するためのサンプルコードを作成しました(下記のコードサンプル)。しかし、postContruct()メソッドとbeforeDestroy()メソッドは呼び出されません。
これを行うには?
import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
public class Test {
public static void main (String...strings) {
Test test = new Test();
System.out.println("Ready....");
test.sayHello();
System.out.println("Done...");
}
private void sayHello() {
System.out.println("Hello World !! ");
}
@PostConstruct
public void postConstruct() {
System.out.println("PostConstruct is called .. ");
}
@PreDestroy
public void beforeDestroy() {
System.out.println("beforeDestroy is called ");
}
}
出力は
Ready....
Hello World !!
Done...
フレームワークなしでは、不可能です。いずれかを使用するか、または1つを作成します。*可視的なフレームワークがなければ、コンパイル時にコードを変更できるようにするJava Annotation Processingなどのものを使用したいかもしれませんが、その点では実行可能かどうかはわかりません。本当に複雑なケースは '@ PreDestroy'です。あなたのコードでは、通常、シャットダウンにフックを追加する必要があります。また、( 'Object'の)' finalize'メソッドを使うこともできますが、すべてのベットはオフになっています。 –
フレームワークなしでは、これらのオブジェクトを構築するのはあなただけであり、発生する唯一の方法はコンストラクタを経由することです。 – EJP
POJOがPostConstructのアノテーションの種類を必要としないことを伝えないでください。おそらく、あなたは数年前に生まれ、フレームワーク上の血と肌に依存します – Arun