1 <?xml version="1.0" encoding="UTF-8"?> 2 <beans xmlns="http://www.springframework.org/schema/beans" 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tx="http://www.springframework.org/schema/tx" 4 xmlns:context="http://www.springframework.org/schema/context" 5 xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:aop="http://www.springframework.org/schema/aop" 6 xsi:schemaLocation="http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd 7 http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd 8 http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd 9 http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd 10 http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd"> 11 12 <!-- 配置databaseSource --> 13 <!-- ====================================== --> 14 <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"> 15 <property name="driverClassName" value="com.mysql.jdbc.Driver"></property> 16 <property name="url" 17 value="jdbc:mysql://localhost:3306/storemanager?characterEncoding=utf-8"></property> 18 <property name="username" value="root"></property> 19 <property name="password" value="123456"></property> 20 <!-- 連接池初始化連接個數 --> 21 <property name="initialSize" value="3" /> 22 <!-- 連接池的最大值 --> 23 <property name="maxActive" value="10" /> 24 <!-- 最大空閑值.當經過一個高峰時間后,連接池可以慢慢將已經用不到的連接慢慢釋放一部分,一直減少到maxIdle為止 --> 25 <property name="maxIdle" value="5" /> 26 <!-- 最小空閑值.當空閑的連接數少於閥值時,連接池就會預申請去一些連接,以免洪峰來時來不及申請 --> 27 <property name="minIdle" value="2" /> 28 <!-- 獲取連接最大等待時間 --> 29 <!-- <property name="maxWait" value="60000" /> --> 30 31 <!-- 配置間隔多久才進行一次檢測,檢測需要關閉的空閑連接,單位是毫秒 --> 32 <property name="timeBetweenEvictionRunsMillis" value="60000" /> 33 <!-- 配置一個連接在池中最小生存的時間,單位是毫秒 --> 34 <property name="minEvictableIdleTimeMillis" value="25200000" /> 35 <!-- 打開removeAbandoned功能 --> 36 <property name="removeAbandoned" value="true" /> 37 <!-- 1800秒,也就是30分鍾 --> 38 <property name="removeAbandonedTimeout" value="1800" /> 39 <!-- 關閉abanded連接時輸出錯誤日志 --> 40 <property name="logAbandoned" value="true" /> 41 <!-- 監控數據庫 --> 42 <!-- <property name="filters" value="mergeStat" /> --> 43 <!-- <property name="filters" value="stat" /> --> 44 </bean> 45 46 <!-- 配置sessionFactory,用於獲取session --> 47 <!-- ====================================== --> 48 <bean id="sessionFactory" 49 class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"> 50 <property name="dataSource"> 51 <ref bean="dataSource" /> 52 </property> 53 <property name="mappingResources"> 54 <list> 55 <value>com/kl/napchen/store/bean/User.hbm.xml</value> 56 <value>com/kl/napchen/store/bean/ProductIn.hbm.xml</value> 57 <value>com/kl/napchen/store/bean/ProductOut.hbm.xml</value> 58 <value>com/kl/napchen/store/bean/ProductType.hbm.xml</value> 59 </list> 60 </property> 61 <property name="hibernateProperties"> 62 <props> 63 <prop key="hibernate.dialect"> 64 org.hibernate.dialect.MySQL5Dialect 65 </prop> 66 <prop key="hibernate.hbm2ddl.auto">update</prop> 67 <prop key="hibernate.format_sql">true</prop> 68 <prop key="hibernate.show_sql">true</prop> 69 <prop key="current_session_context_class">thread</prop> 70 </props> 71 </property> 72 73 <!-- 自動掃描注解方式配置的hibernate類文件 --> 74 <!-- <property name="packagesToScan"> --> 75 <!-- <list> --> 76 <!-- <value>light.mvc.model</value> --> 77 <!-- </list> --> 78 <!-- </property> --> 79 </bean> 80 81 <!-- 配置事務管理器 --> 82 <!-- ====================================== --> 83 <bean id="transactionManager" 84 class="org.springframework.orm.hibernate4.HibernateTransactionManager"> 85 <property name="sessionFactory" ref="sessionFactory" /> 86 <!-- <property name="rollbackOnCommitFailure" value="true" /> --> 87 </bean> 88 89 <!-- 注解方式配置事物 --> 90 <!-- ====================================== --> 91 <!-- <tx:annotation-driven transaction-manager="transactionManager" /> --> 92 93 <!-- AOP方式配置事物 --> 94 <!-- ====================================== --> 95 <tx:advice id="transactionAdvice" transaction-manager="transactionManager"> 96 <tx:attributes> 97 <!-- <tx:method name="get*" propagation="REQUIRED" read-only="true" /> --> 98 <!-- <tx:method name="add*" propagation="REQUIRED" /> --> 99 <tx:method name="delete" propagation="REQUIRED" /> 100 <tx:method name="*" propagation="REQUIRED" /> 101 </tx:attributes> 102 </tx:advice> 103 104 <aop:config> 105 <aop:pointcut id="transactionPointcut" 106 expression="execution(* com.kl.napchen.store.impl..*.*(..))" /> 107 <aop:advisor pointcut-ref="transactionPointcut" 108 advice-ref="transactionAdvice" /> 109 </aop:config> 110 111 <!-- 啟用aspectj注解自動代理 --> 112 <!-- ====================================== --> 113 <aop:aspectj-autoproxy /> 114 115 <!-- 配置代理bean --> 116 <!-- ====================================== --> 117 <bean id="adviceLog" class="com.kl.napchen.store.annotation.AdviceLog"></bean> 118 <bean id="adviceUserLog" class="com.kl.napchen.store.annotation.AdviceUserLog"></bean> 119 120 <!-- 配置Bean --> 121 <!-- ====================================== --> 122 <bean id="user" class="com.kl.napchen.store.bean.User"></bean> 123 <bean id="productIn" class="com.kl.napchen.store.bean.ProductIn"></bean> 124 <bean id="productOut" class="com.kl.napchen.store.bean.ProductOut"></bean> 125 <bean id="productType" class="com.kl.napchen.store.bean.ProductType"></bean> 126 <bean id="sessionInfo" class="com.kl.napchen.store.global.SessionInfo"></bean> 127 <bean id="pageGrid" class="com.kl.napchen.store.page.PageGrid"></bean> 128 129 <!-- 配置操作數據的Dao --> 130 <!-- ====================================== --> 131 <bean id="userDao" class="com.kl.napchen.store.dao.UserDao"></bean> 132 <bean id="productInDao" class="com.kl.napchen.store.dao.ProductInDao"></bean> 133 <bean id="productOutDao" class="com.kl.napchen.store.dao.ProductOutDao"></bean> 134 <bean id="productTypeDao" class="com.kl.napchen.store.dao.ProductTypeDao"></bean> 135 136 <!-- 配置業務處理的service --> 137 <!-- ====================================== --> 138 <bean id="userImpl" class="com.kl.napchen.store.impl.UserImpl"></bean> 139 <bean id="productInImpl" class="com.kl.napchen.store.impl.ProductInImpl"></bean> 140 <bean id="productOutImpl" class="com.kl.napchen.store.impl.ProductOutImpl"></bean> 141 <bean id="productTypeImpl" class="com.kl.napchen.store.impl.ProductTypeImpl"></bean> 142 143 <!-- 配置控制流程的controller --> 144 <!-- ====================================== --> 145 <!-- <bean id="userController" class="com.kl.napchen.store.controller.UserController"></bean> --> 146 <!-- <bean id="productInController" class="com.kl.napchen.store.controller.ProductInController"></bean> --> 147 <!-- <bean id="productOutController" class="com.kl.napchen.store.controller.ProductOutController"></bean> --> 148 <!-- <bean id="productTypeController" class="com.kl.napchen.store.controller.ProductTypeController"></bean> --> 149 150 151 <!-- 配置獲取spring容器中Bean的工具Bean --> 152 <!-- 由於持有ApplicationContext, --> 153 <!-- 可以使用SpringContextHolder.getBean('xx')的靜態方法得到spring bean對象 --> 154 <!-- ====================================== --> 155 <!-- <bean class="com.kl.napchen.storeManagerSystem.contextHolder.SpringContextHolder" 156 lazy-init="false" /> --> 157 158 <!-- 對靜態資源文件的訪問 方案一 (二選一) --> 159 <!-- 使用"*.do"配置DispatcherServlet時不存在靜態資源訪問問題 ,攔截器將不會攔截靜態資源的URL --> 160 <!-- 使用"/"配置DispatcherServlet時存在靜態資源訪問問題,采用以下兩種方案解決 --> 161 <!-- ====================================== --> 162 <mvc:default-servlet-handler /> 163 164 <!-- 對靜態資源文件的訪問 方案二 (二選一) --> 165 <!-- ====================================== --> 166 <!-- 靜態資源映射 --> 167 <!-- <mvc:resources mapping="/js/**" location="/WEB-INF/js/" /> --> 168 <!-- <mvc:resources mapping="/css/**" location="/WEB-INF/css/" /> --> 169 <!-- <mvc:resources mapping="/fonts/**" location="/WEB-INF/fonts/" /> --> 170 <!-- <mvc:resources mapping="/plugins/**" location="/WEB-INF/plugins/" /> --> 171 <!-- <mvc:resources mapping="images/**" location="/WEB-INF/images/" /> --> 172 173 <!-- 默認的注解映射的支持 --> 174 <!-- 采用這下面種方式將自動裝配DefaultAnnotationHandlerMapping和AnnotationMethodHandlerAdapter --> 175 <!-- 采用這下面種方式將無法在 DefaultAnnotationHandlerMapping配置攔截器 --> 176 <!-- ====================================== --> 177 <mvc:annotation-driven /> 178 179 <!-- 配置 DefaultAnnotationHandlerMapping和AnnotationMethodHandlerAdapter --> 180 <!-- ====================================== --> 181 <!-- <bean --> 182 <!-- class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping"> --> 183 <!-- 配置攔截器 --> 184 <!-- <property name="interceptors"> --> 185 <!-- <list> --> 186 <!-- <bean class="com/kl/napchen/storeManagerSystem/interceptor/MyInterceptor"></bean> --> 187 <!-- </list> --> 188 <!-- </property> --> 189 <!-- </bean> --> 190 <!-- <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"> 191 </bean> --> 192 193 <!-- 隱式地向 Spring容器注冊這4個BeanPostProcessor --> 194 <!-- AutowiredAnnotationBeanPostProcessor、 --> 195 <!-- RequiredAnnotationBeanPostProcessor、 --> 196 <!-- CommonAnnotationBeanPostProcessor、 --> 197 <!-- PersistenceAnnotationBeanPostProcessor --> 198 <!-- ====================================== --> 199 <!-- <context:annotation-config /> --> 200 201 202 <!-- 設置使用注解的類所在的jar包 ,使用這種即可省去上面的聲明 --> 203 <!-- ====================================== --> 204 <context:component-scan base-package="com.kl.napchen.store.controller" /> 205 <context:component-scan base-package="com.kl.napchen.store.impl" /> 206 <context:component-scan base-package="com.kl.napchen.store.baseService" /> 207 208 209 <!-- 映射“/”的url --> 210 <!-- ====================================== --> 211 <!-- <mvc:view-controller path="/" view-name="forward:/index2" /> --> 212 213 <!-- configure the InternalResourceViewResolver --> 214 <bean 215 class="org.springframework.web.servlet.view.InternalResourceViewResolver" 216 id="internalResourceViewResolver"> 217 <!-- <property name="viewClass" value="org.springframework.web.servlet.view.JstlView" 218 /> --> 219 <!-- 前綴 --> 220 <property name="prefix" value="/WEB-INF/jsp/" /> 221 <!-- 后綴 --> 222 <property name="suffix" value=".jsp" /> 223 </bean> 224 225 <!-- 自定義攔截器 (近似-總攔截器) --> 226 <!-- ====================================== --> 227 <mvc:interceptors> 228 <!-- 使用bean定義一個Interceptor,直接定義在mvc:interceptors根下面的Interceptor將攔截所有的請求 --> 229 <bean class="com.kl.napchen.store.interceptor.MyInterceptor" /> 230 </mvc:interceptors> 231 232 233 <!-- 總錯誤處理 --> 234 <!-- ====================================== --> 235 <bean id="exceptionResolver" 236 class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver"> 237 <!-- 配置不同類別的錯誤對應的view和狀態碼 --> 238 <property name="exceptionMappings"> 239 <props> 240 <prop key="java.lang.Exception">errors/error</prop> 241 <prop key="java.lang.Throwable">errors/error</prop> 242 <!-- 上傳文件大於最大尺寸后轉向出錯頁面 --> 243 <!-- ====================================== --> 244 <prop 245 key="org.springframework.web.multipart.MaxUploadSizeExceededException">errors/uploadError 246 </prop> 247 </props> 248 </property> 249 <property name="statusCodes"> 250 <props> 251 <prop key="errors/error">500</prop> 252 <prop key="errors/404">404</prop> 253 </props> 254 </property> 255 <!-- 設置日志輸出級別,不定義則默認不輸出警告等錯誤日志信息 --> 256 <property name="warnLogCategory"> 257 <value>org.springframework.web.servlet.handler.SimpleMappingExceptionResolver 258 </value> 259 </property> 260 <!-- 默認錯誤頁面,當找不到上面mappings中指定的異常對應視圖時,使用本默認配置 --> 261 <property name="defaultErrorView" value="errors/error"></property> 262 <!-- 默認HTTP狀態碼 --> 263 <property name="defaultStatusCode" value="500"></property> 264 </bean> 265 266 267 </beans>