- 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>
- struts跟spring整合
web.xml 中需要添加的代碼<!-- 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>
- 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>