@Transactional アノテーションを持つクラス内のメソッドで使用するカスタム メソッド アノテーション (@EventListener) があります。
以下はクラスのサンプルです
@Component
@Transactional
public class someClass {
@EventListener
public void someMethod() {
}
}
クラスは、コンテキスト ファイル コンポーネント スキャンに含まれるパッケージ内にあります。ApplicationContextAware を実装する別のクラスで、クラスのメソッドに @EventListener アノテーションがあるかどうかを確認します。@Transactional がクラスに存在する場合、何らかの奇妙な理由で、カスタム アノテーションが失われます。
これは、メソッドの注釈を確認する方法です。
public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
System.out.println("SCANNING :::::: " + beanName);
for (Method method : bean.getClass().getMethods()) {
for(Annotation a : method.getAnnotations()) {
System.out.println("\t>>>>> " + a.toString());
}
...
注釈を付けるクラス内の他のメソッド注釈を台無しにすることなく @Transactional を使用する方法はありますか?
編集: Spring - @Transactional - バックグラウンドで何が起こるかを投稿した後、これを見つけました。- ある種のプロキシが作成されているようです。これにより、注釈が「消える」ように見えます。元のクラスへの参照を取得する方法はありますか?