Spring@Autowired注解与自动装配 - - 博客频道 - CSDN.NET
http://blog.csdn.net/heyutao007/article/details/5981555
很早就想写一下Spring的反射了,一直没有机会写。
It's the time!
如何开始呢?先查了一下:
spring里头各种获取ApplicationContext的方法 - xieyuooo的专栏 - 博客频道 - CSDN.NET
http://blog.csdn.net/xieyuooo/article/details/8473503
ApplicationContext_百度百科
http://baike.baidu.com/view/9188914.htm
感觉收获一般般啊,还是老方法!
find 代码吧!
一切从SpringContextUtil开始。
还记得之前的缓存方法吗,那里面有一句话:
GoodsInfoDao goodsInfoDao = (GoodsInfoDao) SpringContextUtil.getBean("goodsInfoDaoImpl");
从名字就可以看出,是接口指向实现的一个类似new的方法,这里就直接用了从配置文件中获取bean的方式。
springcontextutil:
package com.umpay.hfmng.common; import org.springframework.beans.BeansException; import org.springframework.beans.factory.NoSuchBeanDefinitionException; import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationContextAware; public class SpringContextUtil implements ApplicationContextAware { private static ApplicationContext applicationContext; //Spring应用上下文环境 /** * 实现ApplicationContextAware接口的回调方法,设置上下文环境 * @param applicationContext * @throws BeansException */ public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { this.applicationContext = applicationContext; } /** * @return ApplicationContext */ public static ApplicationContext getApplicationContext() { return applicationContext; } <span style="color:#cc0000;"> /** * 获取对象 * @param name * @return Object 一个以所给名字注册的bean的实例 * @throws BeansException */ public static Object getBean(String name) throws BeansException { return applicationContext.getBean(name); } /** * 获取类型为requiredType的对象 * 如果bean不能被类型转换,相应的异常将会被抛出(BeanNotOfrequiredTypeException) * @param name bean注册名 * @param requiredType 返回对象类型 * @return Object 返回requiredType类型对象 * @throws BeansException */ public static Object getBean(String name,Class requiredType) throws BeansException { return applicationContext.getBean(name,requiredType); }</span> /** * 如果beanfactory包含一个与所给名称匹配的bean定义,则返回true * @param name * @return boolean */ public static boolean containsBean(String name) { return applicationContext.containsBean(name); } /** * 判断以给定名字注册的bean定义是一个singleton还是一个prototype。 * 如果与给定名字相应的bean定义没有被找到,将会抛出一个异常(NoSuchBeanDefinitionException) * @param name * @return boolean * @throws NoSuchBeanDefinitionException */ public static boolean isSingleton(String name) throws NoSuchBeanDefinitionException { return applicationContext.isSingleton(name); } /** * @param name * @return Class 注册对象的类型 * @throws NoSuchBeanDefinitionException */ public static Class getType(String name) throws NoSuchBeanDefinitionException { return applicationContext.getType(name); } /** * 如果给定的bean名字在bean定义中有别名,则返回这些别名 * @param name * @return * @throws NoSuchBeanDefinitionException */ public static String[] getAliases(String name) throws NoSuchBeanDefinitionException { return applicationContext.getAliases(name); } }
看到了applicationContext.getBean(name)的方法,就大致明白了。这个真的就只是Util类。是一个类里面,包含applicationContext,然后用applicationContext的方法。
那么,applicationContext是什么东东呢?
把鼠标放上去:
Object
org.
springframework.
beans.
factory.
BeanFactory.getBean(
String name) throws
BeansException
Return an instance,which may be shared or independent,of the specified bean.
This method allows a Spring beanfactory to be used as a replacement for the Singleton or Prototype design pattern. Callers may retain references to returned objects in the case of Singleton beans.
Translates aliases back to the corresponding canonical bean name. Will ask the parent factory if the bean cannot be found in this factory instance.
- Parameters:
- name the name of the bean to retrieve
- Returns:
- an instance of the bean
- Throws:
- NoSuchBeanDefinitionException - if there is no bean definition with the specified name
- BeansException - if the bean could not be obtained
走下去:
再看源码就没必要了,都是接口,打开API里面搜索
看All Superinterfaces,就看到了赫赫有名的beanfactory
由于刚才已经显示,getBean这个方法,是BeanFactiory的,所以应该跑进去看BeanFactiory,光看此类是没有结果的。
所以进BeanFactiory
<T>T |
getBean(Class<T>requiredType)
Return the bean instance that uniquely matches the given object type,if any.
|
|
Class<T>requiredType,Object...args)
Return an instance,of the specified bean.
|
||
Object |
getBean(Stringname)
Stringname,
|
beanfactory.html#getBean-java.lang.String-java.lang.Object...-" style="text-decoration:none; color:rgb(74,of the specified bean.
|
web.xml
<?xml version="1.0" encoding="UTF-8"?> <web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> <context-param> <param-name>contextConfigLocation</param-name> <param-value> classpath:config/ctx-common.xml,classpath:config/ctx-uniQuery.xml,classpath:config/ctx-quartz.xml </param-value> </context-param> <context-param> <param-name>log4jConfigLocation</param-name> <param-value>/WEB-INF/classes/log4j.properties</param-value> </context-param> <context-param> <param-name>log4jRefreshInterval</param-name> <param-value>60000</param-value> </context-param> <listener> <listener-class> org.springframework.web.context.ContextLoaderListener </listener-class> </listener> <listener> <listener-class> org.springframework.web.util.IntrospectorCleanupListener </listener-class> </listener> <filter> <filter-name>tiMetaskckfilefilter</filter-name> <filter-class>com.umpay.hfmng.tiMetask.TiMetaskCKFileFilter</filter-class> </filter> <filter-mapping> <filter-name>tiMetaskckfilefilter</filter-name> <url-pattern>/tiMetaskckfile/*</url-pattern> </filter-mapping> <filter> <filter-name>tiMetaskFeedbackfilter</filter-name> <filter-class>com.umpay.hfmng.tiMetask.TiMetaskFeedbackFilter</filter-class> </filter> <filter-mapping> <filter-name>tiMetaskFeedbackfilter</filter-name> <url-pattern>/tiMetaskFeedback/*</url-pattern> </filter-mapping> <servlet> <servlet-name>ssologoutServlet</servlet-name> <servlet-class>com.umpay.sso.client.SSOClientlogoutServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>ssologoutServlet</servlet-name> <url-pattern>/ssoClient/logout</url-pattern> </servlet-mapping> <filter> <filter-name>encodingFilter</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> <init-param> <param-name>forceEncoding</param-name> <param-value>true</param-value> </init-param> </filter> <filter> <filter-name>requestContextFilter</filter-name> <filter-class>org.springframework.web.filter.RequestContextFilter</filter-class> </filter> <filter-mapping> <filter-name>requestContextFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <filter> <filter-name>SSOAgent</filter-name> <filter-class>com.umpay.sso.client.SSOAgent</filter-class> <init-param> <param-name>_exclude_urlpattern</param-name> <param-value>.jpg|.css|.js|.jpg|.gif|.png|.gzjs|.gzcss|.htm</param-value> </init-param> </filter> <filter-mapping> <filter-name>SSOAgent</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <filter> <filter-name>SSOUrlAclFilter</filter-name> <filter-class>com.umpay.sso.client.SSOUrlAclFilter</filter-class> <init-param> <param-name>blackList</param-name> <param-value>/a/*.do*</param-value> </init-param> </filter> <filter-mapping> <filter-name>encodingFilter</filter-name> <url-pattern>*.html</url-pattern> </filter-mapping> <filter-mapping> <filter-name>encodingFilter</filter-name> <url-pattern>*.htm</url-pattern> </filter-mapping> <filter-mapping> <filter-name>encodingFilter</filter-name> <url-pattern>*.do</url-pattern> </filter-mapping> <filter-mapping> <filter-name>encodingFilter</filter-name> <url-pattern>*.action</url-pattern> </filter-mapping> <filter-mapping> <filter-name>SSOUrlAclFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <session-config> <session-timeout>30</session-timeout> </session-config> <servlet> <servlet-name>busi</servlet-name> <servlet-class> org.springframework.web.servlet.DispatcherServlet </servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:config/ctx-mvc.xml </param-value> </init-param> <load-on-startup>2</load-on-startup> </servlet> <servlet-mapping> <servlet-name>busi</servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> <error-page> <error-code>403</error-code> <location>/jsp/sys/403.jsp</location> </error-page> <error-page> <error-code>404</error-code> <location>/jsp/sys/404.jsp</location> </error-page> <error-page> <error-code>500</error-code> <location>/jsp/sys/500.jsp</location> </error-page> </web-app>
ctx-common.xml
<?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:aop="http://www.springframework.org/schema/aop" xmlns:p="http://www.springframework.org/schema/p" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:jdbc="http://www.springframework.org/schema/jdbc" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-3.0.xsd"> <!--messageSource --> <bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource"> <property name="basenames"> <list> <value>classpath:messages</value> </list> </property> <property name="cacheSeconds"> <value>10</value> </property> </bean> <!--system config --> <bean id="sysConfSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource"> <property name="basenames"> <list> <value>classpath:sysconf</value> </list> </property> <property name="cacheSeconds"> <value>10</value> </property> </bean> <bean id="messageService" class="com.umpay.hfmng.service.impl.MessageServiceImpl"> <constructor-arg ref="messageSource" /> <constructor-arg ref="sysConfSource" /> </bean> <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="location"> <value>classpath:jdbc.properties</value> <!-- <value>classpath:proxool.properties</value> --> </property> </bean> <!-- cache --> <bean id="cacheManager" class="org.springframework.cache.ehcache.EhCacheManagerfactorybean"> <property name="configLocation"> <value>classpath:ehcache.xml</value> </property> </bean> <bean id="CouponInfCache" class="org.springframework.cache.ehcache.EhCachefactorybean"> <property name="cacheManager"> <ref local="cacheManager" /> </property> <property name="cacheName"> <value>CouponInfCache</value> </property> </bean> <bean id="ChannelInfoCache" class="org.springframework.cache.ehcache.EhCachefactorybean"> <property name="cacheManager"> <ref local="cacheManager" /> </property> <property name="cacheName"> <value>ChannelInfoCache</value> </property> </bean> <bean id="MerInfoCache" class="org.springframework.cache.ehcache.EhCachefactorybean"> <property name="cacheManager"> <ref local="cacheManager" /> </property> <property name="cacheName"> <value>MerInfoCache</value> </property> </bean> <bean id="GoodsTypeCache" class="org.springframework.cache.ehcache.EhCachefactorybean"> <property name="cacheManager"> <ref local="cacheManager" /> </property> <property name="cacheName"> <value>GoodsTypeCache</value> </property> </bean> <bean id="BankInfoCache" class="org.springframework.cache.ehcache.EhCachefactorybean"> <property name="cacheManager"> <ref local="cacheManager" /> </property> <property name="cacheName"> <value>BankInfoCache</value> </property> </bean> <bean id="XeBankInfoCache" class="org.springframework.cache.ehcache.EhCachefactorybean"> <property name="cacheManager"> <ref local="cacheManager" /> </property> <property name="cacheName"> <value>XeBankInfoCache</value> </property> </bean> <bean id="GoodsInfoCache" class="org.springframework.cache.ehcache.EhCachefactorybean"> <property name="cacheManager"> <ref local="cacheManager" /> </property> <property name="cacheName"> <value>GoodsInfoCache</value> </property> </bean> <bean id="UserInfoCache" class="org.springframework.cache.ehcache.EhCachefactorybean"> <property name="cacheManager"> <ref local="cacheManager" /> </property> <property name="cacheName"> <value>UserInfoCache</value> </property> </bean> <bean id="OperCache" class="org.springframework.cache.ehcache.EhCachefactorybean"> <property name="cacheManager"> <ref local="cacheManager" /> </property> <property name="cacheName"> <value>OperCache</value> </property> </bean> <bean id="UrlAclCache" class="org.springframework.cache.ehcache.EhCachefactorybean"> <property name="cacheManager"> <ref local="cacheManager" /> </property> <property name="cacheName"> <value>UrlAclCache</value> </property> </bean> <bean id="UserRoleCache" class="org.springframework.cache.ehcache.EhCachefactorybean"> <property name="cacheManager"> <ref local="cacheManager" /> </property> <property name="cacheName"> <value>UserRoleCache</value> </property> </bean> <bean id="ChnlInfCache" class="org.springframework.cache.ehcache.EhCachefactorybean"> <property name="cacheManager"> <ref local="cacheManager" /> </property> <property name="cacheName"> <value>ChnlInfCache</value> </property> </bean> <bean id="SecMerInfCache" class="org.springframework.cache.ehcache.EhCachefactorybean"> <property name="cacheManager"> <ref local="cacheManager" /> </property> <property name="cacheName"> <value>SecMerInfCache</value> </property> </bean> <bean id="GoodsCategoryCache" class="org.springframework.cache.ehcache.EhCachefactorybean"> <property name="cacheManager"> <ref local="cacheManager" /> </property> <property name="cacheName"> <value>GoodsCategoryCache</value> </property> </bean> <bean id="ParaCache" class="org.springframework.cache.ehcache.EhCachefactorybean"> <property name="cacheManager"> <ref local="cacheManager" /> </property> <property name="cacheName"> <value>ParaCache</value> </property> </bean> <bean id="MerOperCache" class="org.springframework.cache.ehcache.EhCachefactorybean"> <property name="cacheManager"> <ref local="cacheManager" /> </property> <property name="cacheName"> <value>MerOperCache</value> </property> </bean> <bean id="cacheMap" class="java.util.HashMap"> <constructor-arg> <map> <entry key="CouponInfCache" value-ref="CouponInfCache" /> <entry key="MerInfoCache" value-ref="MerInfoCache" /> <entry key="BankInfoCache" value-ref="BankInfoCache" /> <entry key="XeBankInfoCache" value-ref="XeBankInfoCache" /> <entry key="GoodsInfoCache" value-ref="GoodsInfoCache" /> <entry key="UserInfoCache" value-ref="UserInfoCache" /> <entry key="OperCache" value-ref="OperCache" /> <entry key="UrlAclCache" value-ref="UrlAclCache" /> <entry key="GoodsTypeCache" value-ref="GoodsTypeCache" /> <entry key="UserRoleCache" value-ref="UserRoleCache" /> <entry key="ChannelInfoCache" value-ref="ChannelInfoCache" /> <entry key="ChnlInfCache" value-ref="ChnlInfCache" /> <entry key="SecMerInfCache" value-ref="SecMerInfCache" /> <entry key="GoodsCategoryCache" value-ref="GoodsCategoryCache" /> <entry key="ParaCache" value-ref="ParaCache" /> <entry key="MerOperCache" value-ref="MerOperCache" /> </map> </constructor-arg> </bean> <!-- <bean id="merInfoDao" class="com.umpay.hfmng.dao.impl.MerInfoDaoImpl"> </bean> --> <bean id="HfCache" class="com.umpay.hfmng.cache.HfCache"> <property name="cacheMp" ref="cacheMap" /> <!-- <property name="merInfoDao" ref="merInfoDao"/> --> <property name="messageService" ref="messageService" /> </bean> <!-- 数据源配置,使用应用内的C3P0数据库连接池 --> <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close"> <property name="driverClass" value="${jdbc.driver}" /> <property name="jdbcUrl" value="${jdbc.url}" /> <property name="user" value="${jdbc.username}" /> <property name="password" value="${jdbc.password}" /> <property name="autoCommitOnClose" value="true" /> <property name="checkoutTimeout" value="10000" /><!-- 10s --> <property name="initialPoolSize" value="1" /> <property name="minPoolSize" value="1" /> <property name="maxPoolSize" value="2" /> <property name="acquireIncrement" value="1" /> <property name="idleConnectionTestPeriod" value="60" /><!-- 60s --> <property name="preferredTestQuery" value="values(current timestamp)" /> </bean> <!-- 事务管理器配置,单数据源事务 --> <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource" /> </bean> <bean id="sqlMapClient" class="org.springframework.orm.ibatis.sqlMapClientfactorybean"> <property name="configLocation" value="classpath:sqlmap-config.xml" /> <property name="dataSource" ref="dataSource" /> </bean> <bean id="dao" class="org.springframework.orm.ibatis.sqlMapClientTemplate"> <property name="sqlMapClient" ref="sqlMapClient" /> </bean> <!-- 离线库的连接池、sqlMapClient和dao --> <bean id="dataSourceOffline" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close"> <property name="driverClass" value="${offline.jdbc.driver}" /> <property name="jdbcUrl" value="${offline.jdbc.url}" /> <property name="user" value="${offline.jdbc.username}" /> <property name="password" value="${offline.jdbc.password}" /> <property name="autoCommitOnClose" value="true" /> <property name="checkoutTimeout" value="10000" /><!-- 10s --> <property name="initialPoolSize" value="1" /> <property name="minPoolSize" value="1" /> <property name="maxPoolSize" value="2" /> <property name="acquireIncrement" value="1" /> <property name="idleConnectionTestPeriod" value="60" /><!-- 60s --> <property name="preferredTestQuery" value="values(current timestamp)" /> </bean> <bean id="sqlMapClient_Offline" class="org.springframework.orm.ibatis.sqlMapClientfactorybean"> <property name="configLocation" value="classpath:sqlmap-config-offline.xml" /> <property name="dataSource" ref="dataSourceOffline" /> </bean> <bean id="offlineDao" class="org.springframework.orm.ibatis.sqlMapClientTemplate"> <property name="sqlMapClient" ref="sqlMapClient_Offline" /> </bean> <!-- 使用annotation定义事务 <tx:annotation-driven transaction-manager="transactionManager" /> --> <!-- 支持上传文件 --> <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <!--resolveLazily属性启用是为了推迟文件解析,以便在action中捕获文件大小异常 --> <property name="resolveLazily" value="true" /> <!--最大为10M 即10*1024*1024bytes --> <property name="maxUploadSize" value="10485760" /> </bean> <!-- 资源层和业务层的链接控制器 --> <bean id="httpClientControler" class="com.umpay.hfmng.common.HttpClientControler" destroy-method="destory"> <constructor-arg index="0"><value>20</value></constructor-arg> <constructor-arg index="1"><value>30000</value></constructor-arg> </bean> </beans>
ctx-quartz.xml
ctx-uniQuery.xml
<?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:aop="http://www.springframework.org/schema/aop" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd"> <!-- 统一查询相关bean --> <bean id="namedJt" class="org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate"> <constructor-arg ref="dataSource" /> </bean> <bean id="uniQueryService" class="com.umpay.uniquery.impl.UniQueryServiceImpl"> <property name="jt" ref="namedJt" /> <property name="dialect" ref="db2Dialect" /> <property name="sqlTemplate"> <ref bean="sqlTemplate" /> </property> </bean> <bean id="db2Dialect" class="com.umpay.uniquery.impl.DB2Dialect"> </bean> <bean id="sqlTemplate" class="com.umpay.uniquery.impl.VelocitysqlTemplate"> <property name="sqlConfig"> <ref bean="sqlConfig" /> </property> </bean> <bean id="sqlConfig" class="com.umpay.uniquery.impl.XmlsqlConfig"> <constructor-arg index="0" value="query" /> </bean> <!-- 统一查询相关bean 离线库 --> <bean id="namedJtOffline" class="org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate"> <constructor-arg ref="dataSourceOffline" /> </bean> <bean id="uniQueryServiceOffline" class="com.umpay.uniquery.impl.UniQueryServiceImpl"> <property name="jt" ref="namedJtOffline" /> <property name="dialect" ref="db2Dialect" /> <property name="sqlTemplate"> <ref bean="sqlTemplateOffline" /> </property> </bean> <bean id="sqlTemplateOffline" class="com.umpay.uniquery.impl.VelocitysqlTemplate"> <property name="sqlConfig"> <ref bean="sqlConfigOffline" /> </property> </bean> <bean id="sqlConfigOffline" class="com.umpay.uniquery.impl.XmlsqlConfig"> <constructor-arg index="0" value="queryOffline" /> </bean> </beans>
ctx-mvc.xml
<?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:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd "> <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" /> <bean class="org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor" /> <!-- spring视图展示处理,如excel下载,json格式输出等 --> <bean id="xmlViewResolver" class="org.springframework.web.servlet.view.XmlViewResolver"> <property name="order" value="1" /> <property name="location" value="/WEB-INF/classes/config/ctx-views.xml" /> </bean> <!-- spring视图 velocity模板处理 --> <bean id="velocityConfig" class="org.springframework.web.servlet.view.velocity.VelocityConfigurer"> <property name="resourceLoaderPath" value="/WEB-INF/vm/" /> <property name="velocityProperties"> <props> <prop key="input.encoding">UTF-8</prop> <prop key="output.encoding">UTF-8</prop> <prop key="contentType">text/html;charset=UTF-8</prop> </props> </property> </bean> <bean id="velocityViewResolver" class="org.springframework.web.servlet.view.velocity.VelocityViewResolver"> <property name="cache" value="false" /> <property name="suffix" value=".vm" /> <property name="contentType" value="text/html;charset=UTF-8" /> <!--property name="exposeSpringMacroHelpers" value="true" / --> <property name="exposeRequestAttributes" value="true" /> <property name="requestContextAttribute" value="request" /> <property name="numberToolAttribute" value="number" /> <property name="dateToolAttribute" value="date" /> </bean> <!-- 自动搜索@Controller标注的类 --> <context:component-scan base-package="com.umpay.hfmng" /> <!-- 获取Spring Application上下文 --> <bean id="SpringContextUtil" class="com.umpay.hfmng.common.SpringContextUtil" /> <!-- 使用annotation定义事务 --> <tx:annotation-driven transaction-manager="transactionManager" /> <bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping"> <property name="interceptors"> <!-- 多个拦截器,顺序执行 --> <list> <ref bean="logInterceptor" /> </list> </property> </bean> <bean id="logInterceptor" class="com.umpay.hfmng.interceptor.LogInterceptor" /> <bean id="daoLogger" class="com.umpay.hfmng.interceptor.DaoLoggerInterceptor" /> <bean name="daoLogProxy" class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator"> <property name="interceptorNames"> <list> <value>daoLogger</value> </list> </property> <property name="beanNames"> <list> <value>*DaoImpl</value> </list> </property> </bean> </beans>
ctx-views.xml
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"> <beans> <bean name="jsonView" class="com.umpay.hfmng.view.AjaxJsonView"> <property name="contentType"><value>application/json;charset=UTF-8</value></property> </bean> <bean name="excelView" class="com.umpay.hfmng.view.ExcelView"> </bean> <bean name="excelViewMer" class="com.umpay.hfmng.view.MerExcelView"> </bean> <bean name="excelViewMerBank" class="com.umpay.hfmng.view.MerBankExcelView"> </bean> <bean name="excelFeeCode" class="com.umpay.hfmng.view.FeeCodeExcel"> </bean> <bean name="excelFeeCodeUseQuery" class="com.umpay.hfmng.view.FeeCodeUseQueryExcel"> </bean> <bean name="excelViewGoodsFeeCodeAdd" class="com.umpay.hfmng.view.GoodsFeeCodeAddExcelView"> </bean> <bean name="excelViewGoodsFeeCodeManage" class="com.umpay.hfmng.view.GoodsFeeCodeManageExcelView"> </bean> <bean name="excelViewFeeCodeImportError" class="com.umpay.hfmng.view.FeeCodeImportErrorView"> </bean> <bean name="excelStatsView" class="com.umpay.hfmng.view.ExcelCouponStatsView"> </bean> <bean name="couponCodeExcelView" class="com.umpay.hfmng.view.CouponCodeExcelView"> </bean> <bean name="bakeupDataView" class="com.umpay.hfmng.view.BakeupDataExcelView"> </bean> <bean name="excelMerGrade" class="com.umpay.hfmng.view.MerGradeExcelView"> </bean> <bean name="excelMerGradeImportError" class="com.umpay.hfmng.view.MerGradeImportErrorView"> </bean> <bean name="excelDownloadDoc" class="com.umpay.hfmng.view.DownloadDocView"> </bean> <bean name="excelChnlBank" class="com.umpay.hfmng.view.ChnlBankExcelView"> </bean> <bean name="excelViewChnl" class="com.umpay.hfmng.view.ChnlExcelView"> </bean> <bean name="excelChnlGoods" class="com.umpay.hfmng.view.ChnlGoodsExcelView"> </bean> <bean name="excelChnlMer" class="com.umpay.hfmng.view.ChnlMerExcelView"> </bean> <bean name="excelViewSecMer" class="com.umpay.hfmng.view.SecMerExcelView"> </bean> <bean name="textView" class="com.umpay.hfmng.view.TextView"> </bean> <bean name="excelProxyOrder" class="com.umpay.hfmng.view.ProxyOrderExcelView"></bean> <bean name="excelMerBusiConf" class="com.umpay.hfmng.view.MerBusiConfView"></bean> <bean name="stlAllBillExcelView" class="com.umpay.hfmng.view.StlAllBillExcelView"></bean> <bean name="stlBjBillExcelView" class="com.umpay.hfmng.view.StlBjBillExcelView"></bean> <bean name="stlSwBillExcelView" class="com.umpay.hfmng.view.StlSwBillExcelView"></bean> <bean name="xlsView" class="com.umpay.hfmng.view.XlsView"></bean> <bean name="upServiceView" class="com.umpay.hfmng.view.UPServiceExcelView"></bean> </beans>