zoukankan      html  css  js  c++  java
  • TaskFactory单例模式利用xml

    /** 
     * 
     * Copyright (c) 1995-2009 Wonders Information Co.,Ltd. 
     * 1518 Lianhang Rd,Shanghai 201112.P.R.C.
     * All Rights Reserved.
     * 
     * This software is the confidential and proprietary information of Wonders Group.
     * (Social Security Department). You shall not disclose such
     * Confidential Information and shall use it only in accordance with 
     * the terms of the license agreement you entered into with Wonders Group. 
     *
     * Distributable under GNU LGPL license by gnu.org
     */
    
    package com.yundaex.common.parent.threadpool;
    
    import org.springframework.beans.BeansException;
    import org.springframework.context.ApplicationContext;
    import org.springframework.context.ApplicationContextAware;
    import org.springframework.stereotype.Repository;
    
    /**
     * <p>
     * Title: Adage_[子系统统名]_[模块名]
     * </p>
     * <p>
     * Description: 并发任务工厂,用于动态获取并发任务实例
     * 注意:主要用于事务包装的并发任务,在用SPRING包装任务的事务时,需要注意,任务bean和任务代理bean必须均为Prototype类型(singleton为false)
     * </p>
     * 
     * @author Jessy
     * @version $Revision$ 2010-8-4
     * @author (lastest modification by $Author$)
     * @since 1.0
     */
    @Repository("taskFactory")
    public final class TaskFactory implements ApplicationContextAware {
        private ApplicationContext applicationContext;
    
        private static TaskFactory instance;
    
        private TaskFactory() {
    
        }
    
        /**
         * <p>
         * Discription:获取任务工厂实例
         * </p>
         * 
         * @return
         */
        public static TaskFactory getInstance() {
            if (instance == null) {
                instance = new TaskFactory();
            }
            return instance;
        }
    
        /**
         * <p>
         * Discription:创建并发任务
         * </p>
         * 
         * @param <T> 泛型
         * @param type 任务类型
         * @param taskClass 任务CLASS
         * @return
         */
        public <T extends Task> T createTask(String type, Class<T> taskClass) {
            return taskClass.cast(applicationContext.getBean(type));
        }
    
        /**
         * {@inheritDoc}
         * 
         * @see org.springframework.context.ApplicationContextAware#
         *      setApplicationContext(org.springframework.context.ApplicationContext)
         */
        public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
            this.applicationContext = applicationContext;
    
        }
    }

    applicationContext-common-threadpool.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
    "http://www.springframework.org/dtd/spring-beans.dtd">
    <beans>
        <description></description>
        <bean id="simpleThreadPool" class="com.yundaex.common.parent.threadpool.runtime.SimpleThreadPool"
            abstract="true">
        </bean>
        <bean id="dynamicThreadPool" class="com.yundaex.common.parent.threadpool.runtime.DynamicThreadPool"
            abstract="true">
            <!--<property name="maxSize" value="${your.module.maxSize}"></property>
            <property name="minSize" value="${your.module.minSize}"></property>
            <property name="checkPeriod" value="${your.module.checkPeriod}"></property>
            <property name="sparePeriod" value="${your.module.sparePeriod}"></property>-->
        </bean>
        
        <bean id="taskFactory" class="com.yundaex.common.parent.threadpool.TaskFactory"
            factory-method="getInstance">
        </bean>
    </beans>
  • 相关阅读:
    Spring cloud父项目的建立
    Spring cloud简介
    ssm整合
    springboot-注解讲解
    springboot-helloworld实现
    Java线程池七个参数
    JVM性能调优
    SpringBoot的特性
    Spring与Spring Boot核心注解
    mybatis中#{} 和 ${}的区别
  • 原文地址:https://www.cnblogs.com/tonggc1668/p/7488386.html
Copyright © 2011-2022 走看看