六、自动代理
Spring在生成代理对象的时候,默认情况下,会使用被代理对象的接口来生成代理对象。
如果被代理对象没有实现接口,此时,Spring会使用CGLIB生成代理对象,此时该代理对象是被代理对象的子类。
当有多个目标对象存在时,想用切面,可以使用自动代理。
1、使用BeanNameAutoProxyCreator进行自动代理
接口org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator 根据目标类的ID(配置文件中的ID号)来生成代理。 根据类的名称来为符合相应名称的类生成相应代理对象。 只要指定两个属性:
beanNames(list), interceptorNames 目标类的ID列表 切面 配置文件样例:
class=\
2、DefaultAdvisorAutoProxyCreator
自动匹配Advisor与目标类
org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator
25
自动将Advisor与匹配的Bean进行绑定 只能与Advisor配合使用 配置文件样例:
class=\tor\ 第四章Spring对持久层的支持 Spring对持久层的支持:① JDBC,② O/R Mapping(Hibernate,TopLink等) 一、Spring对持久层支持采用的策略: 1、Spring对持久层“不发明重复的轮子”,即没有重新实现新的持久层方案,对现有持久层方案做封装,更利于使用。 2、采用DAO模式 3、提供了大量的模板类来简化编程(HibernateDaoSupport,JdbcTemplate等) 4、重新设计了一套完善的异常体系结构 ① 类型丰富,细化异常类型 ② 全都是运行时异常(RuntimeException) 二、Spring对JDBC的支持 Step 1: 配置数据源 方式一:采用Spring内置的数据源(测试用,性能不高) Spring内置实现 DriverManagerDataSource 26 方式二:采用开源数据库产品如DBCP DBCP提供的BasicDataSource
方式三: 直接使用容器提供的数据源(如Tomcat,Weblogic,SunAppServer) JNDI数据源:(mysql5,tomcat5.5) step1:
在server.xml中:
type=\ driverClassName=\ url=\ step2: 在context.xml中(conf\\context.xml): 在beans-config.xml: 27 Step 2: 配置JdbcTemplate模板类(封装了绝大多数数据库操作) Step 3: 配置DAO 注意: 查询时,使用RowMapper Step 4: 配置Service 三、Spring对Hibernate的支持 Step1: 配置数据源 Step2: 配置sessionfactory class=\ org.hibernate.dialect.MySQLDialect 28

