1.基础框架搭建
配置文件
名字和位置可以任意:建议在类路径src根目录下,官方推荐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"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
<!-- bean definitions here -->
<!-- Spring配置文件:一个Bean就是一个对象,id就是对象名,class对应类的全限定名 -->
<bean id="someServiceImp" class="com.woniuxy.Service01.SomeServiceImp"/>
</beans>
测试
spring底层会通过反射+配置文件帮你生成一个someService对象,你只需通过getBean(“对象id”)方法直接获取到对象。Spring的主要作用就是解耦。
2.Spring+Mybatis
mybatais的jar包 + Spring的jar
+Spring对Mybatis整合包:MyBatis提供 + 其他jar包
总共21个jar包。
mybatis的配置文件,放在src下。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<!-- 主配置文件名字可以任意,有意义,位置在src目录下 -->
<configuration>
<!-- 会自动扫描指定包下的实体类 -->
<typeAliases>
<package name="com.woniuxy.entity" />
</typeAliases>
<!-- jdbc四大参数在spring中配置 -->
<mappers>
<!-- 指定映射文件所在包,名字必须和接口一样,包括大小写 -->
<package name="com.woniuxy.dao" />
</mappers>
</configuration>
主配置文件,放在src下。
<?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:tx="http://www.springframework.org/schema/tx"
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/aop
http://www.springframework.org/schema/aop/spring-aop.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx.xsd">
<!-- Spring整合MyBatis:有Spring容器创建MyBatis的核心类
SqlSessionFactoryBean:创建SqlSessionFactory -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<!-- 设置MyBatista主配置文件位置 -->
<property name="configLocation" value="classpath:mybatisconfig.xml" />
<!-- 设置数据源 -->
<property name="dataSource" ref="dataSource" />
</bean>
<!-- 配置数据源 -->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="driverClass" value="${jdbc.driver}" />
<property name="jdbcUrl" value="${jdbc.url}" />
<property name="user" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
</bean>
<!-- 指定四大参数properties文件位置,放在src下 -->
<context:property-placeholder location="classpath:jdbc.properties" />
<!-- 获取sqlSession,在mybatis中获取Dao接口实现类对象用sqlSession.getMapper()。
MapperScannerConfigurer:自动扫描指定包(dao接口所在包)
自动生成dao接口的实现类,对应bean的id:如接口为StudentDao,则实现类名为:studentDao -->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.woniuxy.dao" />
<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" />
</bean>
</beans>
DI注解
在spring框架中,生成bean的方式有两种,一种是配置文件的方式,另一中方式是通过注解。这里我们先介绍常用的注解方式生成bean。
注解生成bean底层使用了AOP,所以我们还得添加jar包:
在配置文件中我们还需添加元素,来告诉框架扫描指定包下的注解。
<!--扫描包下的注解 -->
<!--
com.woniuxy.service 扫描当前包及其子包
com.woniuxy.service.* 扫描当前包的子包(当前包的直接下层类,当前包下的类不会扫描)
-->
<context:component-scan base-package="com.woniuxy.service.imp" />
3.Spring+MyBatis+AOP
AOP是一种编程思想,很多框架都实现了AOP
Spring自己实现了AOP,使用麻烦:
IoC的基本jar+aop联盟包(官方组织,定义规范,aop接口)+aop.jar
AspectJ框架也实现,Spring官方也推荐使用AspectJ
IoC的基本jar+aop联盟包(官方组织,定义规范,aop接口)+aop.jar+aspectJ.jar
+spring对apsectj整合包
jar包:
整合AOP主要是实现事务的控制。
事务配置
事务的配置有两种方式,一中是使用使用AOP,可另一种使用Aspectj,我们主要使用Aspectj来配置。
在主配置文件中加入:
<!-- 配置事务管理器 -->
<bean id="transactionManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource" />
</bean>
<!-- 配置事务通知 -->
<tx:advice id="txAdvice" transaction-manager="transactionManager">
<!-- 配置事务属性 -->
<tx:attributes>
<!-- isolation隔离级别,propagation传播机制,rollback-for受查异常一样回滚 -->
<tx:method name="change*" isolation="DEFAULT" propagation="REQUIRED"
rollback-for="Exception" />
</tx:attributes>
</tx:advice>
<aop:config>
<aop:pointcut expression="execution(* *..service.*.*(..))" id="txpointcut"/>
<!-- 顾问,对通知的封装 -->
<aop:advisor advice-ref="txAdvice" pointcut-ref="txpointcut"/>
</aop:config>
4.Spring+MyBatis+AOP+MVC
SpringMVC就是Spring的一个模块,替换Servlet,是一个WebMVC框架。
jar包:增加
web.xml配置:
<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:springmvc.xml</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>/*.do</url-pattern>
</servlet-mapping>