Objectfactory工具类

主要通过Objectfactory这个工具类来创建对象,并进行依赖注入

	private Container container;
    private ActionFactory actionFactory;
    private ResultFactory resultFactory;
    private InterceptorFactory interceptorFactory;
    private ValidatorFactory validatorFactory;
    //构建xwork中action实例的快捷方法
    public Object buildAction(String actionName, String namespace, ActionConfig config, Map<String, Object> extraContext) throws Exception {
        return actionFactory.buildAction(actionName, namespace, config, extraContext);
    }
    
    //构建interceptor的快捷方法
    public Interceptor buildInterceptor(InterceptorConfig interceptorConfig, Map<String, String> interceptorRefParams) throws ConfigurationException {
        return interceptorFactory.buildInterceptor(interceptorConfig, interceptorRefParams);
        //构建result的快捷方法
        public Result buildResult(ResultConfig resultConfig, Map<String, Object> extraContext) throws Exception {
        return resultFactory.buildResult(resultConfig, extraContext);
    }
    }
    //构建validator的快捷方法
    public Validator buildValidator(String className, Map<String, Object> params, Map<String, Object> extraContext) throws Exception {
        return validatorFactory.buildValidator(className, params, extraContext);
    }

工具类可以分为哦两类具有代表性的方法:其一用于构建xwork的内部对象action,interceptor,result,validator.另一类则是用于构建一个普通对象的核心方法buildbean


//根据指定的class和上下文构建bean
    public Object buildBean(Class clazz, Map<String, Object> extraContext) throws Exception {
        return clazz.newInstance();
    }
    //针对指定的对象实施依赖注入
    protected Object injectInternalBeans(Object obj) {
        if (obj != null && container != null) {
            container.inject(obj);
        }
        return obj;
    }
    //针对指定的类名,上下文构建bean
    public Object buildBean(String className, Map<String, Object> extraContext) throws Exception {
        return buildBean(className, extraContext, true);
    }
    //实际操作的构建方法
public Object buildBean(String className, Map<String, Object> extraContext, boolean injectInternal) throws Exception {
        Class clazz = getClassInstance(className);
        Object obj = buildBean(clazz, extraContext);
        if (injectInternal) {
            injectInternalBeans(obj);
        }
        return obj;
    }

bulidbean方法中包含了对象创建和依赖注入两个核心过程。

发布了79 篇原创文章 · 获赞 0 · 访问量 2665

猜你喜欢

转载自blog.csdn.net/qq_41017546/article/details/105100283