<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:p="http://www.springframework.org/schema/p"
       xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:cache="http://www.springframework.org/schema/cache"
       xmlns:task="http://www.springframework.org/schema/task" xmlns:aop="http://www.springframework.org/schema/aop"
       xsi:schemaLocation="http://www.springframework.org/schema/beans   http://www.springframework.org/schema/beans/spring-beans.xsd
                           http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd
                           http://www.springframework.org/schema/tx      http://www.springframework.org/schema/tx/spring-tx-3.1.xsd
                           http://www.springframework.org/schema/cache http://www.springframework.org/schema/cache/spring-cache-3.1.xsd
                           http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-3.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd">

    <!-- 采用注释的方式配置bean -->
    <context:annotation-config/>

    <!-- 配置要扫描的包 -->
    <context:component-scan base-package="com.lyms.platform.biz.service"/>
    <context:component-scan base-package="com.lyms.hospitalapi"/>
    <!-- 配置要扫描的包 -->
    <context:component-scan base-package="com.lyms.platform.biz.dal.impl"/>
    <context:component-scan base-package="com.lyms.platform.operate.web.facade"/>
    <context:component-scan base-package="com.lyms.platform.operate.web.service"/>
    <context:component-scan base-package="com.lyms.platform.permission.*"/>
    <context:component-scan base-package="com.lymsh.platform.reportdata.model.*" />
    <context:component-scan base-package="com.lymsh.platform.reportdata.dao" />
    <context:component-scan base-package="com.lymsh.platform.reportdata.service" />
    <!-- 提示信息加载类 -->
    <bean class="com.lyms.platform.common.core.resolve.MessageResolver">
        <property name="messageFile" value="message.properties"/>
    </bean>
    <import resource="classpath:/spring/applicationContext_biz_patient.xml"/>
    <import resource="classpath:/spring/spring-mongodb.xml"/>
    <import resource="classpath:/spring/applicationContext-dal.xml"/>
    <!--医院单机版的时候需要打开
    <import resource="classpath:/spring/applicationContext-slave.xml"/>-->

    <!--医院单机版的时候需要打开-->
    <!--<import resource="classpath:/spring/applicationContext-quartz.xml"/>-->


    <task:annotation-driven/>

    <!--<task:scheduled-tasks>-->
        <!--<task:scheduled ref="syncDataTaskService" method="syncData" cron="0 0/10 * * * ?"/>-->
    <!--</task:scheduled-tasks>-->

    <bean id="sessionProvider" class="com.lyms.platform.operate.web.session.SessionProvider">
        <property name="iSessionProviderMap">
            <map>
                <entry key="1" value-ref="localSession"/>
                <entry key="2" value-ref="usSession"/>
            </map>
        </property>
        <property name="defaultSessionProvider" ref="localSession"/>
        <property name="currentStrateger" value="${run.mode}"/>
    </bean>
    <bean id="localSession" class="com.lyms.platform.operate.web.session.strategy.LocalCacheSessionStrategy"/>
    <bean id="usSession" class="com.lyms.platform.operate.web.session.strategy.UserCenterStrategy"/>

    <bean id="commonThreadPool" class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor">
        <!-- 核心线程数，默认为1 -->
        <property name="corePoolSize" value="20"/>

        <!-- 最大线程数，默认为Integer.MAX_VALUE -->
        <property name="maxPoolSize" value="50" />
        <!-- 队列最大长度，一般需要设置值>=notifyScheduledMainExecutor.maxNum；默认为Integer.MAX_VALUE
            <property name="queueCapacity" value="1000" /> -->

        <!-- 线程池维护线程所允许的空闲时间，默认为60s -->
        <property name="keepAliveSeconds" value="300" />

        <!-- 线程池对拒绝任务（无线程可用）的处理策略，目前只支持AbortPolicy、CallerRunsPolicy；默认为后者
         <bean class="java.util.concurrent.ThreadPoolExecutor$CallerRunsPolicy" />
        <property name="rejectedExecutionHandler">-->
        <!-- AbortPolicy:直接抛出java.util.concurrent.RejectedExecutionException异常 -->
        <!-- CallerRunsPolicy:主线程直接执行该任务，执行完之后尝试添加下一个任务到线程池中，可以有效降低向线程池内添加任务的速度 -->
        <!-- DiscardOldestPolicy:抛弃旧的任务、暂不支持；会导致被丢弃的任务无法再次被执行 -->
        <!-- DiscardPolicy:抛弃当前任务、暂不支持；会导致被丢弃的任务无法再次被执行 -->
    </bean>
</beans>