- package com.opensymphony.xwork2.spring;
- import com.opensymphony.xwork2.ObjectFactory;
- import com.opensymphony.xwork2.inject.Inject;
- import com.opensymphony.xwork2.util.logging.Logger;
- import com.opensymphony.xwork2.util.logging.LoggerFactory;
- import org.springframework.beans.BeansException;
- import org.springframework.beans.factory.UnsatisfiedDependencyException;
- import org.springframework.beans.factory.config.AutowireCapableBeanFactory;
- import org.springframework.context.ApplicationContext;
- import org.springframework.context.ApplicationContextAware;
- import org.springframework.context.ConfigurableApplicationContext;
- import org.springframework.context.support.ClassPathXmlApplicationContext;
- import java.util.HashMap;
- import java.util.Map;
- /**
- * Simple implementation of the ObjectFactory that makes use of Spring's application context if one has been configured,
- * before falling back on the default mechanism of instantiating a new class using the class name. <p/> In order to use
- * this class in your application, you will need to instantiate a copy of this class and set it as XWork's ObjectFactory
- * before the xwork.xml file is parsed. In a servlet environment, this could be done using a ServletContextListener.
- *
- * @author Simon Stewart (sms@lateral.net)
- */
- public class SpringObjectFactory extends ObjectFactory implements ApplicationContextAware {
- private static final Logger LOG = LoggerFactory.getLogger(SpringObjectFactory.class);
- protected ApplicationContext appContext;
- protected AutowireCapableBeanFactory autoWiringFactory;
- protected int autowireStrategy = AutowireCapableBeanFactory.AUTOWIRE_BY_NAME;
- private final Map<String, Object> classes = new HashMap<String, Object>();
- private boolean useClassCache = true;
- private boolean alwaysRespectAutowireStrategy = false;
- public Object buildBean(String beanName, Map<String, Object> extraContext, boolean injectInternal) throws Exception {
- Object o;
- //检查Spring容器中是否有该bean,如果有就获取该bean,
- //appContext.getBean()方法会负责 创建或取出该bean
- if (appContext.containsBean(beanName)) {
- o = appContext.getBean(beanName);
- } else {//如果spring容器中没有,就自己创建
- Class beanClazz = getClassInstance(beanName);
- o = buildBean(beanClazz, extraContext);
- }
- //如果该bean需要注入,就通过
- //com.opensymphony.xwork2.inject.Container.inject()注入该bean
- if (injectInternal) {
- injectInternalBeans(o);
- }
- return o;
- }
SpringObjectFactory
转载上一篇:二分查找算法
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
struts2启动报错com/opensymphony/xwork2/spring/SpringObjectFactory.java:220:-1
好久没有搞struts2,今天配置strut2.2.1,启动时遇到个小问题。记
java spring struts apache bootstrap