SSM 框架 + maven 整合 搭建

  1. Maven 架包 依賴
    <!-- struct -->
    		<dependency>
    			<groupId>org.apache.struts</groupId>
    			<artifactId>struts2-core</artifactId>
    			<version>2.5.1</version>
    		</dependency>
    		<!-- Mybatis -->
    		<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
    		<dependency>
    			<groupId>org.mybatis</groupId>
    			<artifactId>mybatis</artifactId>
    			<version>3.2.1</version>
    		</dependency>
    <!--  spring 依賴 -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>3.2.18.RELEASE</version>
        </dependency>
    	<!-- https://mvnrepository.com/artifact/org.springframework/spring-test -->
    	<dependency>
    	    <groupId>org.springframework</groupId>
    	    <artifactId>spring-test</artifactId>
    	    <version>3.2.18.RELEASE</version>
    	    <scope>test</scope>
    	</dependency>
    		<!-- https://mvnrepository.com/artifact/org.springframework/spring-core -->
    	<dependency>
    	    <groupId>org.springframework</groupId>
    	    <artifactId>spring-core</artifactId>
    	    <version>3.2.18.RELEASE</version>
    	</dependency>
    		<!-- https://mvnrepository.com/artifact/org.springframework/spring-web -->
    	<dependency>
    	    <groupId>org.springframework</groupId>
    	    <artifactId>spring-web</artifactId>
    	    <version>3.2.18.RELEASE</version>
    	</dependency>
    		<!-- https://mvnrepository.com/artifact/org.springframework/spring-aop -->
    	<dependency>
    	    <groupId>org.springframework</groupId>
    	    <artifactId>spring-aop</artifactId>
    	    <version>3.2.18.RELEASE</version>
    	</dependency>
    	
    <!-- https://mvnrepository.com/artifact/aspectj/aspectjweaver -->
    <dependency>
        <groupId>aspectj</groupId>
        <artifactId>aspectjweaver</artifactId>
        <version>1.5.4</version>
    </dependency>
    
    	
    		<!-- https://mvnrepository.com/artifact/org.springframework/spring-tx -->
    	<dependency>
    	    <groupId>org.springframework</groupId>
    	    <artifactId>spring-tx</artifactId>
    	    <version>3.2.18.RELEASE</version>
    	</dependency>
    	<!-- https://mvnrepository.com/artifact/org.springframework/spring-jdbc -->
    	<dependency>
    	    <groupId>org.springframework</groupId>
    	    <artifactId>spring-jdbc</artifactId>
    	    <version>3.2.18.RELEASE</version>
    	</dependency>
    	<!-- https://mvnrepository.com/artifact/org.springframework/spring-orm -->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-orm</artifactId>
        <version>3.2.18.RELEASE</version>
    </dependency>
    
        <!-- spring strust 插件 -->
        <!-- https://mvnrepository.com/artifact/org.apache.struts/struts2-spring-plugin -->
    <dependency>
        <groupId>org.apache.struts</groupId>
        <artifactId>struts2-spring-plugin</artifactId>
        <version>2.3.33</version>
    </dependency>
    <!--  spring mybatis 整合依賴 -->
      <dependency>
          <groupId>org.mybatis</groupId>
          <artifactId>mybatis-spring</artifactId>
          <version>1.3.1</version>
        </dependency>
    
     <!-- 連接池 -->
        <!-- https://mvnrepository.com/artifact/commons-dbcp/commons-dbcp -->
    
        <dependency>
        <groupId>commons-dbcp</groupId>
        <artifactId>commons-dbcp</artifactId>
        <version>1.4</version>
    </dependency>
    <!-- https://mvnrepository.com/artifact/commons-pool/commons-pool -->
    <dependency>
        <groupId>commons-pool</groupId>
        <artifactId>commons-pool</artifactId>
        <version>1.6</version>
    </dependency>

  2. struts跟spring整合
      
    		<!-- strust2 的 配置 -->
    	<filter>
    		<filter-name>s2</filter-name>
    		<filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class>
    	</filter>
    	<filter-mapping>
    		<filter-name>s2</filter-name>
    		<url-pattern>/*</url-pattern>
    	</filter-mapping>
    		<!-- spring 介入  struts -->
    	
    		<!-- 工廠的創建 -->
    	<listener>
    		<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    	</listener>
    	<!-- 指定工廠的配置文件 -->
    	<context-param>
    		<param-name>contextConfigLocation</param-name>
    		<param-value>classpath:/com/yufan/util/applicationContext.xml</param-value>
    	</context-param>
    web.xml 中需要添加的代碼
  3. mybatis跟spring整合

                <!--要和 Spring 一起使用 MyBatis,你需要在 Spring 應用上下文中定義至少兩樣東西:
    一個 SqlSessionFactory 和至少一個數據映射器類。  -->

    注: 原本mybatis-configxml 中的配置,除了設置別名的屬性,其他的配置信息全部移動到了spring的配置文件中

<configuration>
		<typeAliases>
	<!-- 別名		<typeAlias type="com.yufan.entity.User" alias="User"/> -->
			<typeAlias type="com.yufan.entity.User" alias="User"/>
		</typeAliases>
</configuration>

下面具體介紹spring的配置文件applicationContext.xml 的內容

1.

	<!--  識別jdbc.properties 文件  -->
	<context:property-placeholder location="classpath:/com/yufan/util/jdbc.properties"
	/>

2.

	<!-- 連接池 -->
	<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
    		<property name="driverClassName">
    			<value>${driver}</value>
    		</property>
    		<property name="url">
    			<value>${url}</value>
    		</property>
    		<property name="username">
    			<value>root</value>
    		</property>
    		<property name="password">
    			<value>${password}</value>
    		</property>
    	</bean>

3.創建sqlSessionFactory工廠

    		<!-- SqlSessionFactory -->
	<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
		<property name="dataSource" ref="dataSource"></property>
<!-- 		<property name="configLocation" value="classpath:mybatis-config.xml"/> -->
		<property name="mapperLocations" value="classpath:com/yufan/daoimpl/*.xml"></property>
		 <property name="typeAliasesPackage" value="com.yufan.entity"/>
	</bean>

      mapperLocation mapper的xml映射文件 

       typeAliasesPackage 實體類

 4.爲dao層添加事務控制(實例化)

<bean id="userDao" class="org.mybatis.spring.mapper.MapperFactoryBean">
		<property name="mapperInterface" value="com.yufan.dao.UserDao"></property>
		<property name="sqlSessionFactory" ref="sqlSessionFactory"/>
	</bean>
	

    dao必須是一個接口

    會根據工廠的配置自動連接映射文件,完成實例化。

    使用方法:

    ApplicationContext applicationContext = new 
				ClassPathXmlApplicationContext("/com/yufan/util/applicationContext.xml");
		UserDao userDao = (UserDao)applicationContext.getBean("userDao");
		User u = new User(1, "yufan","yufan", true,20);
		userDao.saveUser(u);
		System.out.println("完成");

5.事務控制

<!-- 配置事務管理 -->
	<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
		<property name="dataSource" ref="dataSource"></property>
	</bean>
	<!-- 事務相關控制配置 -->
	<tx:advice id="txAdvice" transaction-manager="transactionManager">
		<tx:attributes>
			<tx:method name="remove*" propagation="REQUIRED" read-only="false" rollback-for="java.lang.Exception"
				no-rollback-for="java.lang.RuntimeException"/>
			<tx:method name="save*" propagation="REQUIRED" read-only="false" rollback-for="java.lang.RuntimeException"/>
			<tx:method name="modificate*" propagation="REQUIRED" read-only="false" 
				rollback-for="java.lang.RuntimeException"/>
			<tx:method name="create*" propagation="REQUIRED" read-only="false" rollback-for="java.lang.RuntimeException"/>
			<tx:method name="find*" propagation="SUPPORTS"/>
			<tx:method name="query*" propagation="SUPPORTS"/>
			<tx:method name="get*" propagation="SUPPORTS"/>
			<tx:method name="select*" propagation="SUPPORTS"/>
		</tx:attributes>
	</tx:advice>
	
	<!-- 	把事務控制在service層 -->
	<aop:config>
	   <!-- 切入點 -->
   <!--  expression  表達式 execution(* *(..))   爲所有的方法加-->
		<aop:pointcut expression="execution(* com.yufan.serviceimpl..*.*(..))" id="pr"/>
		<aop:advisor advice-ref="txAdvice" pointcut-ref="pr"/>
	</aop:config>

6.service層

<bean id="userService" class="com.yufan.serviceimpl.UserServiceImpl">
		<property name="userDao" ref="userDao"></property>
	</bean>

7.action層

	<bean id="userAction" class="com.yufan.action.UserAction">
		<property name="userService" ref="userService"></property>
	</bean>

發佈了72 篇原創文章 · 獲贊 12 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章