ssm框架配置
阿新 • • 發佈:2018-12-17
spring mvc + spring + mybatis 配置
1:spring-config.xml 封裝sping配置檔案 便於讀取專案中的配置檔案
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation=" http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-4.1.xsd"> <!--讀取配置檔案--> <bean id="configProperty" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="locations"> <array> <value>classpath:/config/properties/config-env.properties</value> <value>classpath:/config/properties/db_config.properties</value> <value>classpath:/config/properties/config.properties</value> <value>classpath:/config/properties/redis_config.properties</value> </array> </property> </bean> <!--注入封裝配置檔案讀取結果物件--> <bean id = "propertiesDto" class="com.jtws.common.model.PropertiesDTO"> </bean> </beans>
配置檔案樣採取key value形式
比如
not_login_url=/common/not-login
PropertiesDTO注入封裝實體類 主要讀取
config-env.properties 與 config.properties
@Component public class PropertiesDTO { @Value("${not_login|_url}") private String notLoginUrl ; public void setNotLoginUrl(String notLoginUrl){ this.notLoginUrl = notLoginUrl; } public String getNotLoginUrl(){ return notLoginUrl; } }
2:spring-basic.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:task="http://www.springframework.org/schema/task" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.1.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.1.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.1.xsd http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-4.1.xsd"> <!-- 掃描業務層service --> <context:component-scan base-package="com.jtws.*.service"/> <context:annotation-config/> <!--AOP--> <!-- 啟用@AspectJ風格的切面宣告 --> <aop:aspectj-autoproxy/> <bean id="myAspect" class="com.jtws.common.base.AspectService"/> <!--定時器 註解支援 @Scheduled--> <task:annotation-driven /> <!-- alibaba druid spring 監控 --> <bean id="druid-stat-interceptor" class="com.alibaba.druid.support.spring.stat.DruidStatInterceptor"/> <bean id="druid-stat-pointcut" class="org.springframework.aop.support.JdkRegexpMethodPointcut" scope="prototype"> <property name="patterns"> <list> <value>com.jtws.*.web.*</value> <value>com.jtws.*.resource.*</value> <value>com.jtws.*.service.*</value> </list> </property> </bean> <aop:config> <aop:advisor advice-ref="druid-stat-interceptor" pointcut-ref="druid-stat-pointcut"/> </aop:config> <!-- alibaba druid spring 監控 --> </beans>
3:spring-db.xml 資料庫配置 讀取db_config.properties檔案配置
<?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" xmlns:aop="http://www.springframework.org/schema/aop" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.1.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.1.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.1.xsd"> <!--資料庫:MySql--> <!--csp0連線池--> <!-- <bean id="dataSource_mysql" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close"> <property name="driverClass" value="${my.jdbc.driver}" /> <property name="jdbcUrl" value="${my.jdbc.url}" /> <property name="user" value="${my.jdbc.username}" /> <property name="password" value="${my.jdbc.password}" /> <property name="initialPoolSize" value="1" /> <!–連線池中保留的最小連線數。–> <property name="minPoolSize" value="0" /> <!–連線池中保留的最大連線數。Default: 15 –> <property name="maxPoolSize" value="50" /> <!–當連線池中的連線耗盡的時候c3p0一次同時獲取的連線數。Default: 3 –> <property name="acquireIncrement" value="5" /> <!–最大空閒時間,1800秒內未使用則連線被丟棄。若為0則永不丟棄。Default: 0 –> <property name="maxIdleTime" value="1000" /> <property name="maxStatements" value="0" /> <property name="testConnectionOnCheckin" value="false"/> <property name="testConnectionOnCheckout" value="true"/> <property name="preferredTestQuery" value="SELECT 1"/> </bean>-->
<!--alibaba 資料來源配置 有利於監控sql執行情況--> <bean id="dataSource_mysql" class="com.alibaba.druid.pool.DruidDataSource" destroy-method="close"> <!-- 資料庫基本資訊配置 --> <property name="url" value="${my.jdbc.url}"/> <property name="username" value="${my.jdbc.username}"/> <property name="password" value="${my.jdbc.password}"/> <property name="driverClassName" value="${my.jdbc.driver}"/> <property name="filters" value="stat"/> <!-- 最大併發連線數 --> <property name="maxActive" value="20"/> <!-- 初始化連線數量 --> <property name="initialSize" value="1"/> <!-- 配置獲取連線等待超時的時間 --> <property name="maxWait" value="60000"/> <!-- 最小空閒連線數 --> <property name="minIdle" value="10"/> <!-- 配置間隔多久才進行一次檢測,檢測需要關閉的空閒連線,單位是毫秒 --> <property name="timeBetweenEvictionRunsMillis" value="60000"/> <!-- 配置一個連線在池中最小生存的時間,單位是毫秒 --> <property name="minEvictableIdleTimeMillis" value="300000"/> <property name="validationQuery" value="SELECT 1 FROM DUAL"/> <property name="testWhileIdle" value="true"/> <property name="testOnBorrow" value="false"/> <property name="testOnReturn" value="false"/> <property name="maxOpenPreparedStatements" value="100"/> <!-- 對於建立時間超過removeAbandonedTimeout的連線強制關閉 --> <property name="removeAbandoned" value="true"/> <!-- 1800 秒,也就是 30 分鐘 --> <property name="removeAbandonedTimeout" value="1800"/> <!-- 關閉 abanded 連線時輸出錯誤日誌 --> <property name="logAbandoned" value="true"/> </bean> <!--配置事務--> <bean id="transactionManager_mysql" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource_mysql" /> </bean> <!--註解式事務,使用JDK動態代理--> <tx:annotation-driven transaction-manager="transactionManager_mysql" /> <!--session factory--> <bean id="sqlSessionFactory_mysql" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource_mysql"/> <property name="mapperLocations" value="classpath:daoMapperConfig/userMapper/*.xml"/> </bean> <!-- 配置掃描器,掃描所有的DAO --> <bean id="daoScan_mysql" class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <property name="basePackage" value="com.jtws.**.dao.userDao,com.jtws.**.dao.agentDao"/> <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory_mysql"/> </bean> </beans>
4:spring-redis.xml redis快取配置 讀取redis_config.properties檔案配置
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" 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-4.1.xsd"> <!--JTWS-redis--> <bean id="configJedisPool" class="com.jtws.common.db.MyJedisPoolBulider" init-method="initConfig"> <property name="poolName" value="jtwsJedisPool"/> <!--伺服器IP地址,預設127.0.0.1--> <property name="jedisIp" value="${jtws.config.jedis.ip}"/> <property name="jedisPort" value="${jtws.config.jedis.port}"/> <property name="jedisUserName" value="${jtws.config.jedis.userName}"/> <property name="encryptPassword" value="${jtws.config.jedis.passWord}"/> <!--啟動的時候是否輸出配置資訊,預設是--> <property name="printJedisConfig" value="true"/> </bean> <bean id="configJedis" class="com.helper.JedisInstanceFactory"> <property name="jedisPoolBulider" ref="configJedisPool"/> </bean> <!--JTWS-redis--> <!--PRO-redis--> <bean id="proJedisPool" class="com.jtws.common.db.MyJedisPoolBulider" init-method="initConfig"> <property name="poolName" value="proJedisPool"/> <!--伺服器IP地址,預設127.0.0.1--> <property name="jedisIp" value="${pro.config.jedis.ip}"/> <property name="jedisPort" value="${pro.config.jedis.port}"/> <property name="jedisUserName" value="${pro.config.jedis.userName}"/> <property name="encryptPassword" value="${pro.config.jedis.passWord}"/> <!--啟動的時候是否輸出配置資訊,預設是--> <property name="printJedisConfig" value="true"/> </bean> <bean id="proJedis" class="com.helper.JedisInstanceFactory"> <property name="jedisPoolBulider" ref="proJedisPool"/> </bean> <!--PRO-redis--> </beans>
5:spring-thread-config.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" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.1.xsd"> <!--執行緒池。--> <bean id="taskPoolExecutor" class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor" destroy-method="shutdown"> <!-- 執行緒池維護執行緒的最少數量 --> <property name="corePoolSize" value="20" /> <!-- 執行緒池維護執行緒所允許的空閒時間 --> <property name="keepAliveSeconds" value="30000" /> <!-- 執行緒池維護執行緒的最大數量 --> <property name="maxPoolSize" value="200" /> <!-- 執行緒池所使用的緩衝佇列 --> <property name="queueCapacity" value="300" /> </bean> <!--非同步執行器,多出的任務開始等待 --> <bean id="simpleAsyncTaskExecutor" class="org.springframework.core.task.SimpleAsyncTaskExecutor"> <property name="daemon" value="true"/> <property name="concurrencyLimit" value="30"/> <property name="threadNamePrefix" value="simpleAsyncTaskExecutor"/> </bean> </beans>
6:servlet-context.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:mvc="http://www.springframework.org/schema/mvc" xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.1.xsd http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.1.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.1.xsd"> <!-- 元件掃描 ,只掃描controller--> <context:component-scan base-package="com.jtws.*.resource,com.jtws.*.web"/> <!-- 解決了@Controller註解的使用前提配置。並提供了:資料繫結支援,@NumberFormatannotation支援, @DateTimeFormat支援,@Valid支援,讀寫XML的支援(JAXB),讀寫JSON的支援(Jackson)--> <mvc:annotation-driven> <!-- 訊息轉換器 解決ResponseBody返回的訊息中的中文亂碼--> <mvc:message-converters register-defaults="true"> <bean class="org.springframework.http.converter.StringHttpMessageConverter"> <property name="supportedMediaTypes" value="application/json;charset=UTF-8"/> </bean> </mvc:message-converters> </mvc:annotation-driven> <!-- 對靜態資原始檔的訪問--> <mvc:resources mapping="/images/**" location="/images/" cache-period="31556926"/> <mvc:resources mapping="/js/**" location="/js/" cache-period="31556926"/> <mvc:resources mapping="/css/**" location="/css/" cache-period="31556926"/> <mvc:resources mapping="/layer/**" location="/layer/" cache-period="31556926"/> <!--解決啟動時候報 No mapping found for HTTP request with URI [/] in DispatcherServlet with name 'appServlet' 的問題--> <mvc:default-servlet-handler/> <!-- Resolves view names to protected .jsp resources within the /WEB-INF/views directory --> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/views/"/> <property name="suffix" value=".jsp"/> <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/> </bean> <!--系統環境的配置,單例載入--> <bean class="com.jtws.common.base.EnvironmentConfig" id="envConfig" scope="singleton"> <!--是否開啟before切入。線上預設關閉0--> <property name="isOpenAspectBefore" value="0"/> <!--是否開啟after切入。線上預設關閉0--> <property name="isOpenAspectAfter" value="0"/> <!--是否開啟URL攔截器,1開啟,0否。線上預設開啟1--> <property name="isOpenIncercept" value="1"/> <!--是否開啟WEB訪問測試模式,1開啟,0否。線上預設關閉0--> <property name="isOpenWebTest" value="0"/> </bean> <!-- 自定義攔截攔截器 --> <mvc:interceptors> <bean class="com.jtws.common.base.UrlInteceptor"> <property name="whiteList"> <!--url攔截的白名單--> <list> <value>MP_verify_TjybT2xT2PIUQ6k1.txt</value> <value>/common/not-login</value> <value>/job/load-devmgmt-desc</value> <value>/job/save-method-visit</value> <value>/job/check-init-cfg</value> <value>/job/check-init-mobile-img</value> <value>/job/query-mobile-cat</value> <value>/job/init-mobile-segment</value> <value>/job/init-app</value> <value>/job/statisticalReportMonth</value> <value>/service/user-login</value> <value>/service/register</value> <value>/service/registerSms</value> <value>/service/get-agreement</value> <value>/service/get-verify-img</value> <value>/service/query-user-share-zhzl</value> <value>/service/query-user-share-zhzl-list</value> <value>/service/query-user-share-check-result</value> <value>/service/query-user-share-check-list</value> <value>/service/query-share-by-code</value> <value>/service/query-devmgmt-desc</value> <value>/service/pro-get-share-result</value> <value>/service/query-nav-img</value> <value>/service/login-out</value> <value>/monitor/user</value> <value>/monitor/userQueySizeDevmgmtClass</value> <value>/monitor/devmgmtSize</value> <value>/staService/sta-user-check-result</value> <value>/safeService/versionManagement</value> <value>/safeService/forget-pwd</value> <value>/payment/deal-user-levelup</value> <value>/payment/deal-user-check-item</value> <value>/payment/deal-user-modify-level</value> <value>/pingxx-service/webhooks</value> <value>/monitor/send-verify-msg-mobile</value> <value>/monitor/addMail</value> <value>/monitor/bulid-active-cards</value> <value>/monitor/update-equipment</value> <value>/monitor/batch-write-diary</value> <value>/monitor/clear-devmgmt-cache</value> <value>/ucc/send-msg</value> <value>/ucc/send-internal-msg</value> <value>/devmgmt/get-dev-desc</value> <value>/app/get-method-visit</value> <value>/diary/query-share-diary</value> <value>/about/about-us-modluar</value> <value>/mail/get-res-video</value> <value>/web/report-index</value> <value>/web/monthcheckPage</value> <value>/web/pro-month-check-page</value> <value>/web/share-result</value> <value>/web/share-overview</value> <value>/web/documentation</value> <value>/web/video</value> <value>/web/video-play</value> <value>/web/family-rule</value> <value>/openapi/register</value> <value>/openapi/find-user</value> <value>/report/pro-get-report-devmgmtClass</value> <value>/report/pro-get-report-devmgmt</value> <value>/report/pro-get-devmgmt-continuity-value</value> <value>/report/getReportDevmgmtClass</value> <value>/report/getReportDevmgmt</value> <!--老版本APP使用,以後可刪除--> <value>/report/monthlyPage</value> <!----> <!--動態報表,臨時測試用--> <value>/report/open-dev-clz</value> <!----> <!--計算模組--> <value>/compute/</value> <!--計算模組--> <value>/favicon.ico</value> <value>/s/</value> <value>/images/</value> <value>/layer/</value> <value>/js/</value> <value>/css/</value> <value>d.html</value> <value>d.jsp</value> <value>/download/</value> <value>/interact/articles</value> <value>/interact/article</value> <value>/report/single-time-report-details</value> </list> </property> <!--web訪問方式,驗證訪問URL的使用者是否登入--> <property name="webList"> <list> <value>/web/login</value> <value>/web/user-login</value> <value>/web/get-user-role</value> <value>/web/user-pay-center</value> <value>/web/get-payment-list</value> <value>/web/get-user-payment</value> <value>/web/payIncrement</value> <value>/web/get-pay-increment-list</value> <value>/web/get-payment-list-page</value> <value>/web/get-user-levelup</value> <value>/web/get-coupon-code-page</value> <value>/web/overview-report</value> </list> </property> </bean> </mvc:interceptors> <!--spring 載入各種元件,注意順序,spring-config是讀取配置檔案,後面的資料庫等依賴於它--> <import resource="classpath:config/spring-config.xml"/> <import resource="classpath:config/spring-basic.xml"/> <import resource="classpath:config/spring-db.xml"/> <import resource="classpath:config/spring-db1.xml"/> <import resource="classpath:config/spring-redis.xml"/> <import resource="classpath:config/spring-thread-config.xml"/> <!--spring 載入其他元件--> </beans>