一,AOP模块:
1,什么是AOP:
我对aop的理解是面向切面编程,也称为横向编程,在之前的动态代理的文章中也介绍过AOP的编程思想,关于AOP的实例。a,serlvet中我们写到的过滤器filters b,service中对事务进行的统一管理 c,Spring中的拦截器
2, AOP模块的定义:
Spring在它的AOP模块中提供了对面向切面编程的丰富支持。例如方法拦截器(method-interceptors)和切点(pointcuts),可以有效的防止代码上功能的耦合,这个模块是在Spring应用中实现切面编程的基础。
二,DAO模块:
1,Spring对DAO的支持:(dataSource的作用)
直接通过配置来理解吧:
a,dataSource 注入数据源
<bean name="dataSource" class="org.apache.commons.dbcp2.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="${jdbc.driverClass}"></property>
<property name="url" value="${jdbc.jdbcUrl}"></property>
<property name="username" value="${jdbc.user}"></property>
<property name="password" value="${jdbc.password}"></property>
</bean>
b,配置properties
jdbc.driverClass=com.mysql.jdbc.Driver
jdbc.jdbcUrl=jdbc:mysql://localhost:3306/zufang
jdbc.user=root
jdbc.password=a
c,数据源dataSource注入到SqlSession工厂
<bean name="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"></property>
<!-- 优化:不需要mybatis的配置文件 ,配置mybatis中别名 , typeAliases -->
<property name="typeAliasesPackage">
<array>
<value>com.yc.bean</value>
</array>
</property>
<property name="mapperLocations" value="classpath*:com/yc/mapper/*.xml"></property>
<!-- mybatis的属性配置-->
<!-- 主要用来配mybatis中的configuration中的setting配置 -->
<property name="configurationProperties">
<props>
<prop key="logImpl">LOG4J</prop>
</props>
</property>
</bean>
d,配置SqlSession
<bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate">
<constructor-arg name="sqlSessionFactory" ref="sqlSessionFactory"></constructor-arg>
</bean>
2,JDBC抽象:
Spring中JDBC抽象框架由四个包组成,核心的包JDBCTemplate,为Spring框架提供JDBC的支持与使用。
JDBC抽象的意义:
对于传统的JDBC,在书写工具类的时候,对于Connection,PreparedStatement,ResultSet用到了大量的try-catch-finally块,代码重复繁琐的同时,因为抛出的异常统一为SqException异常类,这让我们很难分辨是数据库方面的异常,还是java代码书写上的异常,增加了我们调整Bug的时间。
* Spring JDBC中由于Spring对Dao的支持,数据源写入配置文件,使用的时候调用我们所熟悉的set配置方式来取DirverClassName,Url,Username,Password。在书写Dao层的时候继承SqlSessionDaoSupport,SqlSessionDaoSupport中提供对配置进行检测的方法checkDaoConfig,以及getSqlSession的方法进行数据操作。
* 模板设计模式,代码中的重复的复杂的任务部分在模板类中实现的。这种方式简化了JDBC的使用,因为由它来处理资源的创建和释放。
* 提供一个异常抽象层,一套异常可对应的处理方法。当处理异常时,将SQLException映射到其自己异常层次中的具体的异常上(不再单一的抛出SqlException类)。因此,我们不需要担心专门性的SQL状态或错误代码问题;Spring的数据存取异常不是JDBC特定的,因此你的DAO不必绑定到JDBC(由于其可能抛出的异常)。
三,Spring支持ORM
ORM全称对象关系映射(Object/Relation Mapping),指将Java对象状态自动映射到关系数据库中的数据上,从而提供透明化的持久化支持,即把一种形式转化为另一种形式。
Spring对ORM的支持主要表现在以下方面:
- 一致的异常体系结构,对第三方ORM框架抛出的专有异常进行包装,从而在使我们在Spring中只看到DataAccessException异常体系;
- 一致的DAO抽象支持:提供类似与JdbcSupport的DAO支持类HibernateDaoSupport,使用HibernateTemplate模板类来简化常用操作,HibernateTemplate提供回调接口来支持复杂操作;
- Spring事务管理:Spring对所有数据访问提供一致的事务管理,通过配置方式,简化事务管理。