快速搭建一個SSM框架demo

我之因此寫一個快速搭建的demo,主要想作一些容器的demo,因此爲了方便你們,因此一切從簡,簡單的3層架構java

先用mysql的ddl,後期不上oracle的ddlmysql

SET FOREIGN_KEY_CHECKS=0;

-- ----------------------------
-- Table structure for `sys_com_code`
-- ----------------------------
DROP TABLE IF EXISTS `sys_com_code`;
CREATE TABLE `sys_com_code` (
  `CODE_TYPE` varchar(100) COLLATE utf8_bin DEFAULT NULL,
  `CODE_C_TYPE` varchar(100) COLLATE utf8_bin DEFAULT NULL,
  `CODE_VALUE` varchar(100) COLLATE utf8_bin DEFAULT NULL,
  `CODE_NAME` varchar(100) COLLATE utf8_bin DEFAULT NULL,
  `STATUS_CD` varchar(100) COLLATE utf8_bin DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

-- ----------------------------
-- Records of sys_com_code
-- ----------------------------
INSERT INTO `sys_com_code` VALUES ('status', '11', '11', '無效', '10');
INSERT INTO `sys_com_code` VALUES ('status', '10', '10', '有效', '10');

-- ----------------------------
-- Table structure for `sys_resource`
-- ----------------------------
DROP TABLE IF EXISTS `sys_resource`;
CREATE TABLE `sys_resource` (
  `id` int(10) NOT NULL AUTO_INCREMENT,
  `pid` int(10) DEFAULT NULL,
  `name` varchar(100) COLLATE utf8_bin DEFAULT NULL,
  `url` varchar(100) COLLATE utf8_bin DEFAULT NULL,
  `code` varchar(100) COLLATE utf8_bin DEFAULT NULL,
  `type` int(2) DEFAULT NULL,
  `sorts` int(2) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

-- ----------------------------
-- Records of sys_resource
-- ----------------------------
INSERT INTO `sys_resource` VALUES ('1', '-1', '系統設置', 'system', 'system', '0', '1');
INSERT INTO `sys_resource` VALUES ('2', '-1', '管理首頁', 'home', 'home', '0', '2');
INSERT INTO `sys_resource` VALUES ('3', '1', '用戶受權', 'user', 'user', '1', '11');
INSERT INTO `sys_resource` VALUES ('4', '3', '角色管理', '/role/list.do', 'role:list.do', '1', '111');
INSERT INTO `sys_resource` VALUES ('5', '3', '用戶管理', '/user/list.do', 'user:list.do', '0', '112');
INSERT INTO `sys_resource` VALUES ('6', '3', '資源管理', '/resource/list.do', 'resource:list.do', '0', '113');
INSERT INTO `sys_resource` VALUES ('7', '1', '知識案例', 'demo', 'demo', '1', '112');
INSERT INTO `sys_resource` VALUES ('8', '7', 'freemarker案例', '/freemarker/list.do', 'freemarker:list.do', '1', '1123');

-- ----------------------------
-- Table structure for `sys_role`
-- ----------------------------
DROP TABLE IF EXISTS `sys_role`;
CREATE TABLE `sys_role` (
  `id` int(10) NOT NULL AUTO_INCREMENT,
  `name` varchar(50) COLLATE utf8_bin DEFAULT NULL,
  `status` int(2) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

-- ----------------------------
-- Records of sys_role
-- ----------------------------
INSERT INTO `sys_role` VALUES ('1', '超級管理員', '1');
INSERT INTO `sys_role` VALUES ('2', '普通管理員', '1');
INSERT INTO `sys_role` VALUES ('3', '普通用戶', '1');

-- ----------------------------
-- Table structure for `sys_role_resource`
-- ----------------------------
DROP TABLE IF EXISTS `sys_role_resource`;
CREATE TABLE `sys_role_resource` (
  `id` int(10) NOT NULL AUTO_INCREMENT,
  `role_id` int(10) DEFAULT NULL,
  `resource_id` int(10) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=56 DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

-- ----------------------------
-- Records of sys_role_resource
-- ----------------------------
INSERT INTO `sys_role_resource` VALUES ('8', '2', '-1');
INSERT INTO `sys_role_resource` VALUES ('9', '2', '1');
INSERT INTO `sys_role_resource` VALUES ('10', '2', '3');
INSERT INTO `sys_role_resource` VALUES ('11', '2', '4');
INSERT INTO `sys_role_resource` VALUES ('12', '2', '5');
INSERT INTO `sys_role_resource` VALUES ('13', '2', '2');
INSERT INTO `sys_role_resource` VALUES ('14', '3', '-1');
INSERT INTO `sys_role_resource` VALUES ('15', '3', '1');
INSERT INTO `sys_role_resource` VALUES ('16', '3', '3');
INSERT INTO `sys_role_resource` VALUES ('17', '3', '4');
INSERT INTO `sys_role_resource` VALUES ('18', '3', '5');
INSERT INTO `sys_role_resource` VALUES ('19', '4', '-1');
INSERT INTO `sys_role_resource` VALUES ('20', '4', '1');
INSERT INTO `sys_role_resource` VALUES ('21', '4', '3');
INSERT INTO `sys_role_resource` VALUES ('22', '4', '4');
INSERT INTO `sys_role_resource` VALUES ('23', '4', '2');
INSERT INTO `sys_role_resource` VALUES ('47', '1', '-1');
INSERT INTO `sys_role_resource` VALUES ('48', '1', '1');
INSERT INTO `sys_role_resource` VALUES ('49', '1', '3');
INSERT INTO `sys_role_resource` VALUES ('50', '1', '4');
INSERT INTO `sys_role_resource` VALUES ('51', '1', '5');
INSERT INTO `sys_role_resource` VALUES ('52', '1', '6');
INSERT INTO `sys_role_resource` VALUES ('53', '1', '7');
INSERT INTO `sys_role_resource` VALUES ('54', '1', '8');
INSERT INTO `sys_role_resource` VALUES ('55', '1', '2');

-- ----------------------------
-- Table structure for `sys_user`
-- ----------------------------
DROP TABLE IF EXISTS `sys_user`;
CREATE TABLE `sys_user` (
  `id` int(10) NOT NULL AUTO_INCREMENT,
  `user_name` varchar(50) COLLATE utf8_bin DEFAULT NULL,
  `password` varchar(500) COLLATE utf8_bin DEFAULT NULL,
  `age` int(2) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

-- ----------------------------
-- Records of sys_user
-- ----------------------------
INSERT INTO `sys_user` VALUES ('8', 'admin', '53d8c7cee066fec7840bcbbfb1733192', '12');
INSERT INTO `sys_user` VALUES ('9', 'superadmin', '53d8c7cee066fec7840bcbbfb1733192', '12');
INSERT INTO `sys_user` VALUES ('10', 'loafer', '53d8c7cee066fec7840bcbbfb1733192', '12');

-- ----------------------------
-- Table structure for `sys_user_role`
-- ----------------------------
DROP TABLE IF EXISTS `sys_user_role`;
CREATE TABLE `sys_user_role` (
  `id` int(30) NOT NULL AUTO_INCREMENT,
  `role_id` int(30) DEFAULT NULL,
  `user_id` int(30) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

-- ----------------------------
-- Records of sys_user_role
-- ----------------------------
INSERT INTO `sys_user_role` VALUES ('2', '2', '8');
INSERT INTO `sys_user_role` VALUES ('3', '1', '9');
INSERT INTO `sys_user_role` VALUES ('4', '3', '10');
sql-ddl.sql 

預先準備:用插件自動生成自動生成DAO層,連接在(後期補上)git

第一步:建立maven工程,導入依賴包,目前個人工程暫時叫MyArtifactgithub

 

<project xmlns="http://maven.apache.org/POM/4.0.0" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>ssmtest</groupId>
  <artifactId>ssmtest</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>war</packaging>
  
<dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>3.8.1</version>
            <scope>test</scope>
        </dependency>
        <!-- spring 相關jar -->
        <!-- Spring 4.3.3 -->
        <!-- Core Container 核心容器 -->
        <!-- 核心工具類,Spring其它模塊大量使用Spring-core -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-test</artifactId>
            <version>4.3.3.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>
            <version>4.3.3.RELEASE</version>
        </dependency>
        <!-- 運行時Spring容器 -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>4.3.3.RELEASE</version>
        </dependency>
        <!-- Spring容器對第三方包的集成 -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context-support</artifactId>
            <version>4.3.3.RELEASE</version>
            <type>jar</type>
            <scope>compile</scope>
        </dependency>
        <!-- Spring定義Bean的支持 -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-beans</artifactId>
            <version>4.3.3.RELEASE</version>
        </dependency>
        <!-- 使用表達式語言在運行時查詢和操做對象 -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-expression</artifactId>
            <version>4.3.3.RELEASE</version>
        </dependency>
        <!-- End Core Container 核心容器 -->

        <!-- AOP -->
        <!-- 基於代理的AOP支持 -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-aop</artifactId>
            <version>4.3.3.RELEASE</version>
        </dependency>
        <!-- 基於AspectJ的AOP支持 -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-aspects</artifactId>
            <version>4.3.3.RELEASE</version>
        </dependency>
        <!-- aspectj -->
        <dependency>
            <groupId>org.aspectj</groupId>
            <artifactId>aspectjrt</artifactId>
            <version>1.8.5</version>
        </dependency>
        <dependency>
            <groupId>org.aspectj</groupId>
            <artifactId>aspectjweaver</artifactId>
            <version>1.8.5</version>
        </dependency>
        <!-- End AOP -->

        <!-- web -->
        <!-- 提供基礎的web集成的功能,在web項目中提供Spring容器 -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-web</artifactId>
            <version>4.3.3.RELEASE</version>
        </dependency>
        <!-- 提供基於Servlet的SpringMVC -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>4.3.3.RELEASE</version>
        </dependency>
        <!-- 提供WebSocket功能 -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-websocket</artifactId>
            <version>4.3.3.RELEASE</version>
        </dependency>
        <!-- 提供Portlet環境支持 -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc-portlet</artifactId>
            <version>4.3.3.RELEASE</version>
        </dependency>

        <!-- json -->

        <dependency>
            <groupId>org.codehaus.jackson</groupId>
            <artifactId>jackson-core-lgpl</artifactId>
            <version>1.9.6</version>
        </dependency>
        <dependency>
            <groupId>org.codehaus.jackson</groupId>
            <artifactId>jackson-core-asl</artifactId>
            <version>1.9.4</version>
        </dependency>
        <dependency>
            <groupId>org.codehaus.jackson</groupId>
            <artifactId>jackson-mapper-asl</artifactId>
            <version>1.9.5</version>
        </dependency>
        <dependency>
            <groupId>org.codehaus.jackson</groupId>
            <artifactId>jackson-mapper-lgpl</artifactId>
            <version>1.9.6</version>
        </dependency>

        <!-- End web -->

        <!-- DataAccess/Integration 數據訪問/集成 -->
        <!-- 提供以JDBC訪問數據庫的支持 -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jdbc</artifactId>
            <version>4.3.3.RELEASE</version>
        </dependency>
        <!-- 提供編程式和聲明式的事務支持 -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-tx</artifactId>
            <version>4.3.3.RELEASE</version>
        </dependency>
        <!-- 提供對 對象/關係映射技術的支持 -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-orm</artifactId>
            <version>4.3.3.RELEASE</version>
        </dependency>
        <!-- 提供對JMS的支持 -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jms</artifactId>
            <version>4.3.3.RELEASE</version>
        </dependency>
        <!-- End DataAccess/Integration 數據訪問/集成 -->
        <dependency>
            <groupId>org.codehaus.jackson</groupId>
            <artifactId>jackson-mapper-asl</artifactId>
            <version>1.9.13</version>
        </dependency>
        <!-- End Spring 4.0 -->

        <!-- mybatis jar -->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.4.1</version>
        </dependency>
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis-spring</artifactId>
            <version>1.3.0</version>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.21</version>
        </dependency>
        <dependency>
            <groupId>com.github.pagehelper</groupId>
            <artifactId>pagehelper</artifactId>
            <version>5.0.1</version>
        </dependency>
        <!-- 數據源驅動包 -->
        <dependency>
            <groupId>c3p0</groupId>
            <artifactId>c3p0</artifactId>
            <version>0.9.1.2</version>
            <type>jar</type>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.apache.commons/commons-dbcp2 -->
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-dbcp2</artifactId>
            <version>2.1.1</version>
        </dependency>

        <!-- 打印日誌 -->
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>1.7.22</version>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
            <version>1.7.22</version>
        </dependency>
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.17</version>
        </dependency>
        <dependency>
            <groupId>jstl</groupId>
            <artifactId>jstl</artifactId>
            <version>1.2</version>
        </dependency>

        <!-- jsp jar -->
        <!-- JSP相關 -->

        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>servlet-api</artifactId>
            <version>2.5</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>jsp-api</artifactId>
            <version>2.0</version>
            <scope>provided</scope>
        </dependency>

<!-- 單元測試 -->
            <dependency>
                <groupId>org.unitils</groupId>
                <artifactId>unitils-core</artifactId>
                <version>3.4.2</version>
            </dependency>
            <dependency>
                <groupId>org.unitils</groupId>
                <artifactId>unitils-dbunit</artifactId>
                <version>3.4.2</version>
            </dependency>
            <dependency>
                <groupId>org.unitils</groupId>
                <artifactId>unitils-io</artifactId>
                <version>3.4.2</version>
            </dependency>
            <dependency>
                <groupId>org.unitils</groupId>
                <artifactId>unitils-database</artifactId>
                <version>3.4.2</version>
            </dependency>
            <dependency>
                <groupId>org.unitils</groupId>
                <artifactId>unitils-spring</artifactId>
                <version>3.4.2</version>
            </dependency>
            <dependency>
                <groupId>org.dbunit</groupId>
                <artifactId>dbunit</artifactId>
                <version>2.5.3</version>
            </dependency>

            <dependency>
                <groupId>org.easymock</groupId>
                <artifactId>easymock</artifactId>
                <version>3.5.1</version>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>org.easymock</groupId>
                <artifactId>easymock</artifactId>
                <version>RELEASE</version>
            </dependency>

            <dependency>
                <groupId>org.unitils</groupId>
                <artifactId>unitils-core</artifactId>
                <version>3.4.2</version>
            </dependency>
            <dependency>
                <groupId>org.unitils</groupId>
                <artifactId>unitils-dbunit</artifactId>
                <version>3.4.2</version>
            </dependency>
            <dependency>
                <groupId>org.unitils</groupId>
                <artifactId>unitils-io</artifactId>
                <version>3.4.2</version>
            </dependency>
            <dependency>
                <groupId>org.unitils</groupId>
                <artifactId>unitils-database</artifactId>
                <version>3.4.2</version>
            </dependency>
            <dependency>
                <groupId>org.unitils</groupId>
                <artifactId>unitils-spring</artifactId>
                <version>3.4.2</version>
            </dependency>
            <dependency>
                <groupId>org.dbunit</groupId>
                <artifactId>dbunit</artifactId>
                <version>2.5.3</version>
            </dependency>

    </dependencies>
    
    <build>

        <finalName>MyArtifact</finalName>



        <plugins>
            <!-- For Maven Tomcat Plugin -->
            <plugin>
                <groupId>org.apache.tomcat.maven</groupId>
                <artifactId>tomcat7-maven-plugin</artifactId>
                <!-- or if you want to use tomcat 6.x <artifactId>tomcat6-maven-plugin</artifactId> -->
                <version>2.2</version>
                <configuration>
                    <server>Tomcat7</server> <!-- 與{tomcatHome}/conf/setting.xml 中的serverID相同 -->
                    <url>http://localhost:8080/manager/text</url><!-- tomcat管理路徑 -->
                    <!-- http port -->
                    <port>8080</port>
                    <!-- application path always starts with / -->
                    <path>/MyArtifact</path>
                    <!-- 能夠在該命令下啓動tomcat時自動加載修改的class,而不用從新發布。 -->
                    <contextReloadable>true</contextReloadable>
                    </configuration>

            </plugin>

        </plugins>
    </build>
</project>
pom

 

第二步:web

建立3個資源文件(最簡化的)spring

mybatis-config.xml          (一些mybatis 的設置,和插件,例:pagehelper)sql

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration PUBLIC  
    "-//mybatis.org//DTD Config 3.0//EN"  
    "WEB-INF/dtd/mybatis-3-config.dtd">
<configuration>

    <!-- 分頁插件 -->
    <plugins>
        <plugin interceptor="com.github.pagehelper.PageInterceptor">
            <property name="helperDialect" value="oracle" />
            <property name="offsetAsPageNum" value="true" />
            <property name="rowBoundsWithCount" value="true" />
            <property name="pageSizeZero" value="true" />
            <property name="reasonable" value="true" />
            <property name="params"
                value="pageNum=start;pageSize=limit;pageSizeZero=zero;reasonable=heli;count=contsql" />
        </plugin>
    </plugins>
</configuration> 
mybatis-config.xml

第二個配置文件 applicationContext-*.xml(或者取其餘名字)數據庫

做用:1>.數據源(兩個例子)express

<!-- 數據庫鏈接池 :dataSource -->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"
   destroy-method="close">
   <property name="driverClass" value="com.mysql.jdbc.Driver" />
   <property name="jdbcUrl"
      value="jdbc:mysql://localhost:3306/play?useUnicode=true&amp;characterEncoding=UTF-8" />
   <property name="user" value="root" />
   <property name="password" value="root" />
   <property name="minPoolSize" value="1" />
   <property name="maxPoolSize" value="20" />
   <property name="maxIdleTime" value="1800" />
   <property name="acquireIncrement" value="2" />
   <property name="maxStatements" value="0" />
   <property name="initialPoolSize" value="2" />
   <property name="idleConnectionTestPeriod" value="1800" />
   <property name="acquireRetryAttempts" value="30" />
   <property name="breakAfterAcquireFailure" value="true" />
   <property name="testConnectionOnCheckout" value="false" />
</bean>
數據源demo

   

<?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:tx="http://www.springframework.org/schema/tx" xmlns:aop="http://www.springframework.org/schema/aop"
    xmlns:util="http://www.springframework.org/schema/util" xmlns:p="http://www.springframework.org/schema/p"
    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/tx http://www.springframework.org/schema/tx/spring-tx.xsd
        http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd
        http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd">



    <bean id="dataSource" class="org.apache.commons.dbcp2.BasicDataSource"
        destroy-method="close">
        <!-- 必須的配置 -->
        <property name="driverClassName" value="oracle.jdbc.OracleDriver" />
        <property name="url" value="${jdbc.url}" />
        <property name="username" value="${jdbc.username}" />
        <property name="password" value="${jdbc.password}" />
        <property name="defaultAutoCommit" value="false" />

        <!-- 可選配置 -->
        <!-- 鏈接池啓動時建立的初始化鏈接數量(默認值爲0) -->
        <property name="initialSize" value="${jdbc.initialSize}" />

        <!-- 鏈接池中最大的空閒的鏈接數,超過的空閒鏈接將被釋放,若是設置爲負數表示不限制(默認爲8個,maxIdle不能設置過小, 由於假如在高負載的狀況下,鏈接的打開時間比關閉的時間快,會引發鏈接池中idle的個數 
            上升超過maxIdle,而形成頻繁的鏈接銷燬和建立,相似於jvm參數中的Xmx設置) -->
        <property name="maxIdle" value="${jdbc.maxIdle}" />

        <!-- 鏈接池中最小的空閒的鏈接數,低於這個數量會被建立新的鏈接(默認爲0,調整爲5,該參數越接近maxIdle,性能越好, 由於鏈接的建立和銷燬,都是須要消耗資源的; 
            可是不能太大,由於在機器很空閒的時候,也會建立低於minidle個數的鏈接,相似於jvm參數中的Xmn設置) -->
        <property name="minIdle" value="${jdbc.minIdle}" />

        <!-- 併發鏈接的最大數。設置爲0則無限制 -->
        <property name="maxTotal" value="${jdbc.maxTotal}" />

        <!-- 等待鏈接的最大鏈接的時間,以毫秒計 -->
        <property name="maxWaitMillis" value="${jdbc.maxWaitMillis}" />

        <!--SQL查詢,用來驗證從鏈接池取出的鏈接,在將鏈接返回給調用者以前. -->
        <property name="validationQuery" value="select sysdate from dual" />

        <!--指明是否在從池中取出鏈接前進行檢驗,若是檢驗失敗,則從池中去除鏈接並嘗試取出另外一個 -->
        <property name="testOnBorrow" value="true" />
    </bean>

</beans>
數據源demo2

 

 

 

2>. 數據庫配置SqlSessionFactoryBean(主要是:掃描mapper,定義事物管理)apache

    <!-- 數據庫配置SqlSessionFactoryBean -->
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource" />
        <property name="configLocation" value="classpath:mybatis-config.xml" />
    </bean>

    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="basePackage" value="com.howbuy.otc.dao.mapper" />
    </bean>

    <bean id="transactionManager"
        class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource" />
    </bean>
數據庫配置SqlSessionFactoryBean

     3>.service層配置  

<!-- 導入文件 -->
<!--<import resource="classpath:spring-service.xml" />-->

<!--
若是存在一個事務,則支持當前事務。若是沒有事務則開啓 --> <bean id="transactionTemplate" class="org.springframework.transaction.support.TransactionTemplate"> <property name="transactionManager" ref="transactionManager" /> </bean> <!-- 以AspectJ方式 定義 事務 --> <aop:config proxy-target-class="true" > <aop:advisor pointcut="execution(* com.howbuy.otc.invest.service..*.*(..))" advice-ref="txAdvice" order="2"/> </aop:config> <!-- 配置事務傳播特性:若是存在一個事務,則支持當前事務。若是沒有事務則開啓:REQUIRED --> <tx:advice id="txAdvice" transaction-manager="transactionManager"> <tx:attributes> <tx:method name="add*" propagation="REQUIRED" rollback-for="Exception" /> <tx:method name="update*" propagation="REQUIRED" rollback-for="Exception" /> <tx:method name="save*" propagation="REQUIRED" rollback-for="Exception" /> <tx:method name="delete*" propagation="REQUIRED" rollback-for="Exception" /> <tx:method name="exec*" propagation="REQUIRED" rollback-for="Exception" /> <tx:method name="insert*" propagation="REQUIRED" rollback-for="Exception" /> <tx:method name="merge*" propagation="REQUIRED" rollback-for="Exception" /> <tx:method name="batch*" propagation="REQUIRED" rollback-for="Exception" /> <tx:method name="add*Atom" propagation="REQUIRES_NEW" rollback-for="Exception" /> <tx:method name="update*Atom" propagation="REQUIRES_NEW" rollback-for="Exception" /> <tx:method name="save*Atom" propagation="REQUIRES_NEW" rollback-for="Exception" /> <tx:method name="delete*Atom" propagation="REQUIRES_NEW" rollback-for="Exception" /> <tx:method name="*Atom" propagation="REQUIRES_NEW" rollback-for="Exception" /> <tx:method name="get*" propagation="SUPPORTS" rollback-for="Exception" /> <tx:method name="count*" propagation="SUPPORTS" rollback-for="Exception" /> <tx:method name="*" propagation="SUPPORTS" read-only="true" /> </tx:attributes> </tx:advice>

    <!-- 包掃描路徑配置 -->
    <context:component-scan base-package="com.howbuy.otc" />

<!--實例定義AOP-->

      <aop:config>
        <aop:aspect id="handlerAspect" ref="handlerServiceAspect">
        <aop:around pointcut="execution(* com.howbuy.otc.invest.handler..*.*HandlerService.*(..))" method="doAround" />
        </aop:aspect>
      </aop:config>

 

至此spring的大體配置完成,至於定時任務,JMS等等,須要本身去配。

第三步:spring-mvc.xml  主要是(掃controller,視圖解析器,上傳文件配置,將reponsebody返回的java對象利用jasckson包轉化爲json字符串等等)

<?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:p="http://www.springframework.org/schema/p"
    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/mvc 
        http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd
        http://www.springframework.org/schema/context 
        http://www.springframework.org/schema/context/spring-context.xsd">

    <!-- 同時開啓json格式的支持 -->
    <mvc:annotation-driven />
    
    <!-- spring mvc 掃描全部的controller 可是不掃描service -->
    <context:component-scan base-package="com.controller">
        <context:include-filter type="annotation"
            expression="org.springframework.stereotype.Controller" />
        <context:exclude-filter type="annotation"
            expression="org.springframework.stereotype.Service" />
    </context:component-scan>

    
    <!-- 對模型視圖名稱的解析,即在模型視圖名稱添加先後綴 -->
    <bean
        class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/jsp/" />
        <property name="suffix" value=".jsp" /><!--可爲空,方便實現自已的依據擴展名來選擇視圖解釋類的邏輯 -->
    </bean>

</beans>
spring-mvc.xml

第四步:由於咱們沒有用spring-boot,所用還須要配置,web-xml文件。

<!-- 加載(spring自身的,事務,mybatis)配置文件-->
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:spring/applicationContext*.xml</param-value>
    </context-param>
    
    
    <!-- 防止spring內存溢出監聽器 -->  
    <listener>  
        <listener-class>org.springframework.web.util.IntrospectorCleanupListener</listener-class>  
    </listener> 
    
    <!--Spring的ApplicationContext 載入:Spring的監聽器 -->
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>

    <!-- 加載SpringMVC的配置文件-->
    <servlet>
        <servlet-name>SpringMVC</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:spring/SpringMVC.xml</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>

    </servlet>
    
    <servlet-mapping>
        <servlet-name>SpringMVC</servlet-name>
        <url-pattern>*.action</url-pattern>
    </servlet-mapping>
    
    <filter>  
            <description>字符集過濾器</description>  
            <filter-name>encodingFilter</filter-name>  
            <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>  
                <init-param>  
                    <description>字符集編碼</description>  
                    <param-name>encoding</param-name>  
                    <param-value>UTF-8</param-value>  
                </init-param>  
    </filter>  
    <filter-mapping>  
        <filter-name>encodingFilter</filter-name>  
        <url-pattern>/*</url-pattern>  
    </filter-mapping> 
    
    
    
        <!-- 配置session超時時間,單位分鐘 -->  
        <session-config>  
            <session-timeout>60</session-timeout>  
        </session-config>  
          
        <!-- DEFAULT PAGE -->  
        <welcome-file-list>  
            <welcome-file>index.jsp</welcome-file>  
        </welcome-file-list>  
web.xml

至此--ssm簡易demo達成完畢。

(最後補充一個完整的applicationContext.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:tx="http://www.springframework.org/schema/tx"
    xmlns:aop="http://www.springframework.org/schema/aop"
    xmlns:util="http://www.springframework.org/schema/util" 
    xmlns:p="http://www.springframework.org/schema/p"
    xmlns:task="http://www.springframework.org/schema/task"
    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/tx 
        http://www.springframework.org/schema/tx/spring-tx.xsd
        http://www.springframework.org/schema/util 
        http://www.springframework.org/schema/util/spring-util.xsd
        http://www.springframework.org/schema/aop 
        http://www.springframework.org/schema/aop/spring-aop.xsd 
        http://www.springframework.org/schema/task 
        http://www.springframework.org/schema/task/spring-task-3.0.xsd">
        
        <!-- 數據庫鏈接池 :dataSource -->
        <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" ><!-- destroy-method="close" -->
               <property name="driverClass" value="com.mysql.jdbc.Driver" />
               <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/play?useUnicode=true&amp;characterEncoding=UTF-8" />
               <property name="user" value="root" />
               <property name="password" value="root" />
             <property name="minPoolSize" value="1" />
               <property name="maxPoolSize" value="20" />
               <property name="maxIdleTime" value="1800" />
               <property name="acquireIncrement" value="2" />
               <property name="maxStatements" value="0" />
               <property name="initialPoolSize" value="2" />
               <property name="idleConnectionTestPeriod" value="1800" />
               <property name="acquireRetryAttempts" value="30" />
               <property name="breakAfterAcquireFailure" value="true" />
               <property name="testConnectionOnCheckout" value="false" />
        </bean>
        
        <!-- 數據庫配置SqlSessionFactoryBean -->
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource" />
        <property name="configLocation" value="classpath:mybatis-config.xml" />
    </bean>

    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="basePackage" value="com.dao" />
    </bean>

    <bean id="transactionManager"  class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource" />
    </bean>
        
        <!-- 若是存在一個事務,則支持當前事務。若是沒有事務則開啓 -->
    <bean id="transactionTemplate" class="org.springframework.transaction.support.TransactionTemplate">
        <property name="transactionManager" ref="transactionManager" />
    </bean>

    <context:component-scan base-package="com.service.impl">
        <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller" />
    </context:component-scan>
    <!-- 以AspectJ方式 定義 事務 -->
    <aop:config proxy-target-class="true" >
        <aop:advisor pointcut="execution(* com.service..*.*(..))"  advice-ref="txAdvice" order="2"/>
    </aop:config>
    
     <!-- 配置事務傳播特性:若是存在一個事務,則支持當前事務。若是沒有事務則開啓:REQUIRED -->
    <tx:advice id="txAdvice" transaction-manager="transactionManager">
        <tx:attributes>
            <tx:method name="add*" propagation="REQUIRED" rollback-for="Exception" />
            <tx:method name="update*" propagation="REQUIRED" rollback-for="Exception" />
            <tx:method name="save*" propagation="REQUIRED" rollback-for="Exception" />
            <tx:method name="delete*" propagation="REQUIRED" rollback-for="Exception" />
            <tx:method name="exec*" propagation="REQUIRED" rollback-for="Exception" />
            <tx:method name="insert*" propagation="REQUIRED" rollback-for="Exception" />
            <tx:method name="merge*" propagation="REQUIRED" rollback-for="Exception" />
            <tx:method name="batch*" propagation="REQUIRED" rollback-for="Exception" />

            <tx:method name="add*Atom" propagation="REQUIRES_NEW" rollback-for="Exception" />
            <tx:method name="update*Atom" propagation="REQUIRES_NEW" rollback-for="Exception" />
            <tx:method name="save*Atom" propagation="REQUIRES_NEW" rollback-for="Exception" />
            <tx:method name="delete*Atom" propagation="REQUIRES_NEW" rollback-for="Exception" />
            <tx:method name="*Atom" propagation="REQUIRES_NEW" rollback-for="Exception" />

            <tx:method name="get*" propagation="SUPPORTS" rollback-for="Exception" />
            <tx:method name="count*" propagation="SUPPORTS" rollback-for="Exception" />
            <tx:method name="*" propagation="SUPPORTS" read-only="true" /> 
        </tx:attributes>
    </tx:advice>
        
</beans>
applicationContext.xml
相關文章
相關標籤/搜索