StrutsSpringObjectFactoryの処理内容

org.apache.struts2.spring.StrutsSpringObjectFactoryは、下記のStruts2用インターフェースを実装したオブジェクトを、Springで生成させることができます。

  • com.opensymphony.xwork2.Action
  • com.opensymphony.xwork2.interceptor.Interceptor
  • com.opensymphony.xwork2.Result
  • com.opensymphony.xwork2.validator.Validator


実行時にApplicationContextの内容を確認したところ、xworkのInterceptorがSpringに登録されていることが確認できました。

com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor =java.lang.Object@16535bf
com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor =java.lang.Object@16535bf
com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor =java.lang.Object@16535bf
org.apache.struts2.interceptor.ProfilingActivationInterceptor =java.lang.Object@16535bf
・・・


内部実装としては、com.opensymphony.xwork2.spring.SpringObjectFactoryのラッパーで、処理はこのクラスに委譲しているだけのようです。実際のところStrutsSpringObjectFactoryがやっているのは以下の内容だけ。

  • WebApplicationContextUtilsでアプリケーションコンテキストを取得して、SpringObjectFactory#setApplicationContext()に設定する。
  • クラスキャッシュを使うかどうか(struts.objectFactory.spring.useClassCache)を取得して、SpringObjectFactory#setUseClassCache()に設定する。
  • オートワイヤリングのタイプ(struts.objectFactory.spring.autoWire)を取得して、SpringObjectFactory#setAutowireStrategy()に設定する。




参考