プレゼンテーションフレームワークとDIコンテナが連携する際に問題になるのは、プレゼンテーションフレームワークで生成しているオブジェクトがDIコンテナで管理できないという部分です。
WebWork2(というかXWork)では、Action,Result,Interceptorなどのインスタンスを生成する部分が、com.opensymphony.xwork.ObjectFactoryというクラスに外出しされており、Actionなどを直に生成せずにDIコンテナから取得させることが出来るため、DIコンテナとの連携が容易になっています。
独自のObjectFactoryの作成
ObjectFactoryを継承してbuildBean()メソッドをオーバーライドし、DIコンテナからオブジェクトを取得する処理を実装します。
public class OriginalObjectFactory extends ObjectFactory { public Object buildBean(Class clazz) throws Exception { // DIコンテナからオブジェクトを取得する処理 } public Object buildBean(String className) throws Exception { // DIコンテナからオブジェクトを取得する処理 } }