1. 程式人生 > >ssm框架配置

ssm框架配置

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/beans
http://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>