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()に設定する。
参考