Spring AOP操作action時に注入できず、NullPointer異常を報告

801 ワード

Spring AOPを使用してactionレイヤを操作すると、注入に失敗し、空のポインタ異常が発生します.
なぜなら、一般的なstruts 2+springアプリケーションでは、springのプラグインはactionのioc部分のみを担当しているが、機能強化は行われていない.すなわち、エージェントのメカニズムを採用し、すべてのactionはstruts 2を使用して管理されている.
AOPを使用すると、これらのアクションはspringによって管理される必要があります.springによってエージェントが行われていない場合、注入に失敗します.
解決策:Struts 2の特殊なconstantは、Springの自動アセンブリポリシーが常に考慮されていることを確認する役割を果たします.struts.objectFactory.spring.autoWire.alwaysRespectは、その値をtrueに設定します.
<constant name="struts.objectFactory.spring.autoWire.alwaysRespect" value="true" /> 

その後、すべてのactionに注釈を追加します.
@Component("action")//action        
@Scope("prototype")
strutsの構成ではactionの名前を使用して構成され、@Scopeはactionがマルチインスタンスを使用することを宣言するために使用され、AOPは通常の注入を行うことができる.