spring上下文初始化

方式一:


import org.springframework.context.ApplicationListener;
import org.springframework.context.event.ContextRefreshedEvent;
import org.springframework.stereotype.Component;
import java.util.Properties;
import javax.annotation.Resource;

@Component
public class SysInitBean implements ApplicationListener<ContextRefreshedEvent> {

    @Override
    public void onApplicationEvent(ContextRefreshedEvent event) {
        if (event.getApplicationContext().getParent() == null) {
            // todo
        }
    }
}

方式二:

正常项目:

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
	http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">

    <display-name>Archetype Created Web Application</display-name>

    <!-- 字符编码过滤器 -->
    <filter>
        <filter-name>Set Character Encoding</filter-name>
        <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
        <init-param>
            <param-name>encoding</param-name>
            <param-value>UTF-8</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>Set Character Encoding</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

    <!-- 日志监听 -->
    <context-param>  
        <param-name>log4jConfigLocation</param-name>  
        <param-value>classpath:log4j.properties</param-value>  
    </context-param>
    <context-param>
        <param-name>webAppRootKey</param-name>
        <param-value>hs.root</param-value>
    </context-param>
	
    <listener>
        <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
    </listener>

    <listener>
        <listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>
    </listener>

    <!-- Spring注入配置文件 -->
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:applicationContext.xml</param-value>
    </context-param>

  
    <!--Spring WebApplicationContext 载入 -->
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>
    <filter>
        <filter-name>shiroFilter</filter-name>
        <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
        <init-param>
            <param-name>targetFilterLifecycle</param-name>
            <param-value>true</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>shiroFilter</filter-name>
        <url-pattern>/index</url-pattern>
        <url-pattern>/com/*</url-pattern>
        <url-pattern>/*</url-pattern>

    </filter-mapping>
    <!-- default默认的servlet来处理静态资源,不进入DispatcherServlet -->
    <servlet-mapping>
        <servlet-name>default</servlet-name>
        <url-pattern>*.jpg</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
        <servlet-name>default</servlet-name>
        <url-pattern>*.xls</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
        <servlet-name>default</servlet-name>
        <url-pattern>*.xlsx</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
        <servlet-name>default</servlet-name>
        <url-pattern>*.js</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
        <servlet-name>default</servlet-name>
        <url-pattern>*.css</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
        <servlet-name>default</servlet-name>
        <url-pattern>*.txt</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
        <servlet-name>default</servlet-name>
        <url-pattern>*.ico</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
        <servlet-name>default</servlet-name>
        <url-pattern>*.png</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
        <servlet-name>default</servlet-name>
        <url-pattern>*.gif</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
        <servlet-name>default</servlet-name>
        <url-pattern>*.swf</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
        <servlet-name>default</servlet-name>
        <url-pattern>*.html</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
        <servlet-name>default</servlet-name>
        <url-pattern>*.ttf</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
        <servlet-name>default</servlet-name>
        <url-pattern>*.woff</url-pattern>
    </servlet-mapping>
    <servlet>
        <servlet-name>Spring MVC</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:springMVC-servlet.xml</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>

    <servlet-mapping>
        <servlet-name>Spring MVC</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>

    <servlet>
        <servlet-name>Jabber HTTP Binding Servlet</servlet-name>
        <servlet-class>org.jabber.JabberHTTPBind.JHBServlet</servlet-class>
    </servlet>

    <servlet-mapping>
        <servlet-name>Jabber HTTP Binding Servlet</servlet-name>
        <url-pattern>/JHB/</url-pattern>
    </servlet-mapping>

    <servlet>
        <servlet-name>DruidStatView</servlet-name>
        <servlet-class>com.alibaba.druid.support.http.StatViewServlet</servlet-class>
    </servlet>
    <servlet>
        <servlet-name>UploadFile</servlet-name> 
        <servlet-class>org.springframework.web.context.support.HttpRequestHandlerServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>UploadFile</servlet-name>
        <url-pattern>/UploadFile</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
        <servlet-name>DruidStatView</servlet-name>
        <url-pattern>/druid/*</url-pattern>
    </servlet-mapping>
	
    <servlet>
        <servlet-name>dwr-invoker</servlet-name>
        <servlet-class>
            org.directwebremoting.servlet.DwrServlet
        </servlet-class>
        <init-param>
            <param-name>crossDomainSessionSecurity</param-name>
            <param-value>false</param-value>
        </init-param>
        <init-param>
            <param-name>allowScriptTagRemoting</param-name>
            <param-value>true</param-value>
        </init-param>
        <init-param>
            <param-name>activeReverseAjaxEnabled</param-name>
            <param-value>true</param-value>
        </init-param>
        <init-param>
            <param-name>initApplicationScopeCreatorsAtStartup</param-name>
            <param-value>true</param-value>
        </init-param>
        <init-param>
            <param-name>maxWaitAfterWrite</param-name>
            <param-value>3000</param-value>
        </init-param>
        <init-param>
            <param-name>debug</param-name>
            <param-value>true</param-value>
        </init-param>
    </servlet>

    <servlet-mapping>
        <servlet-name>dwr-invoker</servlet-name>
        <url-pattern>/dwr/*</url-pattern>
    </servlet-mapping>

    <!-- 试题导入重复比对 <servlet> <servlet-name>comparison</servlet-name> <jsp-file>/comparison.jsp</jsp-file> 
    <load-on-startup>1</load-on-startup> </servlet> -->

    <!-- 扩展标签配置页面使用函数 -->
    

    <!-- session的时长为30min -->
    <session-config>
        <session-timeout>30</session-timeout>
    </session-config>

    <welcome-file-list>
        <welcome-file>index</welcome-file>
    </welcome-file-list>

	<error-page>
        <error-code>403</error-code>
	<location>/WEB-INF/1_2/403.jsp</location>
    </error-page>
    <error-page>
        <error-code>404</error-code>
	<location>/WEB-INF/1_2/404.jsp</location>
    </error-page>
    <error-page>
        <error-code>405</error-code>
	<location>/WEB-INF/1_2/405.jsp</location>
    </error-page>
    <error-page>
        <error-code>500</error-code>
	<location>/WEB-INF/1_2/500.jsp</location>
	</error-page>

</web-app>
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:mvc="http://www.springframework.org/schema/mvc"
       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.xsd
		http://www.springframework.org/schema/mvc
		http://www.springframework.org/schema/mvc/spring-mvc.xsd">

    <!--    <util:properties id="constants" location="classpath:constants.properties" />-->
    <context:property-placeholder location="classpath:constants.properties"/>

    <!-- <mvc:annotation-driven /> -->
    <mvc:annotation-driven ignore-default-model-on-redirect="true">
        <mvc:message-converters register-defaults="false">
            <bean class="org.springframework.http.converter.ByteArrayHttpMessageConverter"/>
            <bean class="org.springframework.http.converter.StringHttpMessageConverter">
                <property name="supportedMediaTypes" value="text/plain;charset=UTF-8"/>
            </bean>
            <bean
                class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
                <property name="supportedMediaTypes" value="text/plain;charset=UTF-8"/>
            </bean>
        </mvc:message-converters>
    </mvc:annotation-driven>


    <context:component-scan base-package="cn">
        <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Service"/>
    </context:component-scan>

    <mvc:default-servlet-handler/>

    <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/1_2/"/>
        <property name="suffix" value=".jsp"/>
    </bean>

    <!-- 支持上传文件 -->
    <bean id="multipartResolver"
          class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
        <!--1024*200即200k -->
        <property name="maxUploadSize" value="1524288000"/>
        <!--resolveLazily属性启用是为了推迟文件解析,以便在UploadAction 中捕获文件大小异常 -->
        <property name="resolveLazily" value="true"/>
    </bean>


</beans>
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       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.xsd">

    <bean name='handlerMapping' class='org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping'></bean>
    <bean id="schedulerFactory" class="org.springframework.scheduling.quartz.SchedulerFactoryBean"></bean>

    <context:annotation-config />

    <context:component-scan base-package="">
    </context:component-scan>

    <bean id="freeMarker" class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">
        <property name="templateLoaderPath" value="classpath:/src/main/java/cn/howso/util/templates" /><!--指定模板文件目录 -->
        <property name="freemarkerSettings"><!-- 设置FreeMarker环境属性 -->
            <props>
                <prop key="template_update_delay">1800</prop><!--刷新模板的周期,单位为秒 -->
                <prop key="default_encoding">UTF-8</prop><!--模板的编码格式 -->
                <prop key="locale">zh_CN</prop><!-- 本地化设置 -->
            </props>
        </property>
    </bean>
    <bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
        <property name="host">
            <value>${mailServerHost}</value>
        </property>
        <property name="javaMailProperties" ref="mailConfig"></property>
        <property name="username">
            <value>${mailUserName}</value> <!-- 发送者用户名 -->
        </property>
        <property name="password">
            <value>${mailUserPass}</value> <!-- 发送者密码 -->
        </property>
    </bean>
    <bean id="templateEmailService" class="cn.howso.service.impl.templateEmail.TemplateEmailServiceImpl">
        <property name="sender" ref="mailSender"></property>
        <property name="freeMarkerConfigurer" ref="freeMarker"></property>
    </bean>
    <!-- MemCached -->
    <bean id="memcachedPool" class="com.danga.MemCached.SockIOPool" factory-method="getInstance" init-method="initialize" destroy-method="shutDown">
        <constructor-arg>
            <value>neeaMemcachedPool</value>
        </constructor-arg>
        <property name="servers">
            <list>
                <value>${memcached_address}:${memcached_port}</value>
            </list>
        </property>
        <property name="initConn">
            <value>20</value>
        </property>
        <property name="minConn">
            <value>10</value>
        </property>
        <property name="maxConn">
            <value>250</value>
        </property>
        <property name="maintSleep">
            <value>30</value>
        </property>
        <property name="nagle">
            <value>false</value>
        </property>
        <property name="socketTO">
            <value>3000</value>
        </property>
        <property name="socketConnectTO">
            <value>0</value>
        </property>
        <property name="aliveCheck">
            <value>true</value>
        </property>
    </bean>

    <bean id="memCachedClient" class="com.danga.MemCached.MemCachedClient">
        <constructor-arg>
            <value>neeaMemcachedPool</value>
        </constructor-arg>
    </bean>
    <bean id="mc" class="cn.howso.util.MemCached">
        <property name="memCachedClient" ref="memCachedClient"></property>
    </bean>

    <!-- <import resource="applicationContext-mybatis.xml" /> -->
    <import resource="applicationContext-database.xml" />
<!--    <import resource="applicationContext-cache.xml" />-->
    <import resource="applicationContext-shiro.xml" />
    <import resource="classpath:applicationContext-jms.xml" />
    <import resource="classpath:applicationContext-yun.xml" />
    <import resource="classpath:applicationContext-fileUpload.xml" />
    <import resource="classpath:applicationContext-practice.xml" />
    <import resource="classpath:applicationContext-pushMessage.xml" />
    <import resource="classpath:applicationContext-facade.xml" />
    <import resource="classpath:applicationContext-redis.xml" />
    <!-- <import resource="classpath:applicationContext-memcached.xml" /> -->
</beans>
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:tx="http://www.springframework.org/schema/tx"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
		http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd"
       default-lazy-init="false" default-autowire="byName">

    <description>MyBatis-Shards Horizontal Sharding Demo</description>

    <!-- shard dataSource config -->
    <bean id="shard_1" class="org.makersoft.shards.cfg.impl.ShardConfigurationImpl">
        <property name="shardId" value="1"/>
        <property name="dataSource" ref="lazyConnectionDataSource_1"/>
    </bean>

    <bean id="m2oSqlIntercept" class="cn.hongsong.co.sqlintercept.M2OSqlInterceptor">
        <property name="cacheFacade" ref="memCacheFacade" />
    </bean>

    <!-- mybatis 配置-->
    <bean id="updateInterceptService" class="cn.hongsong.co.sqlintercept.UpdateInterceptService"/>
    <bean id="shardedSqlSessionFactory" class="org.makersoft.shards.spring.ShardedSqlSessionFactoryBean">
        <property name="mapperLocations">
            <list>
                <value>classpath*:cn/howso/dao/**/*.xml</value>
                <value>classpath*:cn/hongsong/co/dao/**/*.xml</value>
            </list>
        </property>
        <property name="shardConfigurations">
            <array>
                <ref bean="shard_1"/>
            </array>
        </property>
        <property name="configLocation" value="classpath:mybatis-config.xml"/>
        <property name="shardStrategyFactory">
            <bean class="easyxue.makersoft.hards.strategy.HorizontalShardStrategyFactory"/>
        </property>
        <property name="idGenerator">
            <bean class="org.makersoft.shards.id.uuid.ShardedUUIDGenerator"/>
        </property>
        <property name="plugins">
            <ref bean="updateInterceptService"/>
        </property>
    </bean>

    <!-- scan for mappers and let them be autowired -->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="basePackage" value="cn.howso.dao,cn.hongsong.co.dao"/>
        <property name="sqlSessionFactoryBeanName" value="shardedSqlSessionFactory"/>
        <property name="annotationClass" value="org.makersoft.shards.annotation.MyBatisMapper"/>
    </bean>

    <!-- 事务配置 -->
    <bean id="transactionManager" class="org.springframework.data.transaction.ChainedTransactionManager">
        <constructor-arg>
            <list>
                <bean class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
                    <property name="dataSource" ref="lazyConnectionDataSource_1"/>
                </bean>
            </list>
        </constructor-arg>
    </bean>

    <!-- 使用annotation定义事务 -->
    <tx:annotation-driven transaction-manager="transactionManager"/>

    <!-- Simple连接池 -->
    <bean id="dataSource_1" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close">
        <!-- 基本属性 url、user、password -->
        <property name="driverClassName" value="${mysql.jdbc.driver}"/>
        <property name="url" value="${ds1.jdbc.url}"/>
        <property name="username" value="${ds1.jdbc.username}"/>
        <property name="password" value="${ds1.jdbc.password}"/>
        <!-- 配置初始化大小、最小、最大 -->
        <property name="initialSize" value="15"/>
        <property name="minIdle" value="1"/>
        <property name="maxActive" value="2000"/>
        <!-- 配置获取连接等待超时的时间 -->
        <property name="maxWait" value="60000"/>
        <!-- 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 -->
        <property name="timeBetweenEvictionRunsMillis" value="60000"/>
        <!-- 配置一个连接在池中最小生存的时间,单位是毫秒 -->
        <property name="minEvictableIdleTimeMillis" value="300000"/>
        <property name="validationQuery" value="SELECT 'x'"/>
        <property name="testWhileIdle" value="true"/>
        <property name="testOnBorrow" value="false"/>
        <property name="testOnReturn" value="false"/>
        <!-- 打开PSCache,并且指定每个连接上PSCache的大小 -->
        <property name="poolPreparedStatements" value="true"/>
        <property name="maxPoolPreparedStatementPerConnectionSize" value="20"/>
        <!-- 配置监控统计拦截的filters -->
        <property name="filters" value="stat"/>
    </bean>

    <bean id="lazyConnectionDataSource_1" name="name_1" class="org.springframework.jdbc.datasource.LazyConnectionDataSourceProxy">
        <property name="targetDataSource" ref="dataSource_1"/>
    </bean>


</beans>
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:tx="http://www.springframework.org/schema/tx"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
       http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd">
	
	<description>mybatis配置</description>
	
	<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"
          init-method="init" destroy-method="close">
        <!-- 基本属性 url、user、password -->
        <property name="url" value="${druid.jdbcUrl}" />
        <property name="username" value="${druid.username}" />
        <property name="password" value="${druid.password}" />
        <!-- 配置初始化大小、最小、最大 -->
        <property name="initialSize" value="15" />
        <property name="minIdle" value="1" />
        <property name="maxActive" value="2000" />
        <!-- 配置获取连接等待超时的时间 -->
        <property name="maxWait" value="60000" />
        <!-- 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 -->
        <property name="timeBetweenEvictionRunsMillis" value="60000" />
        <!-- 配置一个连接在池中最小生存的时间,单位是毫秒 -->
        <property name="minEvictableIdleTimeMillis" value="300000" />
        <property name="validationQuery" value="SELECT 'x'" />
        <property name="testWhileIdle" value="true" />
        <property name="testOnBorrow" value="false" />
        <property name="testOnReturn" value="false" />
        <!-- 打开PSCache,并且指定每个连接上PSCache的大小 -->
        <property name="poolPreparedStatements" value="true" />
        <property name="maxPoolPreparedStatementPerConnectionSize" value="20" />
        <!-- 配置监控统计拦截的filters -->
        <property name="filters" value="stat" />
    </bean>
	
	<bean id="updateInterceptService" class="cn.hongsong.co.sqlintercept.UpdateInterceptService"/>
	
	<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
		<property name="dataSource" ref="dataSource" />
		<!-- 指定sqlMapConfig总配置文件,订制的environment在spring容器中不在生效 -->
		<property name="configLocation" value="classpath:mybatis-config.xml" />
		<!--指定实体类映射文件,可以指定同时指定某一包以及子包下面的所有配置文件, mapperLocations和configLocation有一个即可,当需要为实体类指定别名时, 
			可指定configLocation属性,再在mybatis总配置文件中采用mapper引入实体类映射文件 -->
        <property name="mapperLocations">
            <list>
                <value>classpath*:cn/howso/dao/**/*.xml</value>
                <value>classpath*:cn/hongsong/co/dao/**/*.xml</value>
            </list>
        </property>
		<property name="plugins">
			<ref bean="updateInterceptService"/>
		</property>
	</bean>

	<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
		<property name="basePackage" value="cn.howso.dao.mapper,cn.howso.dao.com.mapper,cn.hongsong.co.dao.mapper" />
		<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" />
	</bean>
	
	<!-- 事务管理器 -->    
    <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource" />    
    </bean>
    
    <tx:annotation-driven transaction-manager="transactionManager" />  
</beans>

猜你喜欢

转载自blog.csdn.net/jz1993/article/details/81194424
今日推荐