あなたが言ったように、Springがアノテーションを介してトランザクションを処理する方法はAOPを使用しています。AOP ビットは動的プロキシを使用して実装されます (ドキュメントを参照) 。
そのためには、Spring コンテナーを介してクラスのインスタンス (ここでは Pojo) を取得する必要があります。これを機能させるために、Spring は Pojo を介して動的プロキシを返し、注釈付きのメソッドを自動的にトランザクション管理コード。
単純に
Pojo p = new Pojo();
p.doInTransaction();
ここでSpringが果たす役割はなく、メソッド呼び出しはトランザクション内にはありません。
だからあなたがする必要があるのはこのようなものです
ApplicationContext springContext = ...;
Pojo p = (Pojo) springContext.getBean("your.pojo.id");
p.doInTransaction();
注: これは一例です。Bean をコンテキストから手動で取得するのではなく、依存性注入を優先する必要があります。
そうすることで、適切に構成された Spring コンテキストを使用して、Spring はクラスを監視してトランザクション アノテーションをスキャンし、Bean をアノテーション対応の動的プロキシ インスタンスに自動的にラップする必要があります。何も変更しない観点からは、オブジェクトを独自のクラスにキャストしますが、Spring コンテキスト Pojo Bean のクラス名を出力しようとすると、Proxy$ として何かが得られます。 ..元のクラス名ではありません。
とにかくこのリンクを見てください:リンクテキスト