18.01.24,web学习第四十五天,还有半年,努力吧青年 Spring第三天 aop事务配置+Spring整合jdbc操作

45.Spring第三天

1.复习 aspect:方面

1)注解代替xml配置

导包4+2+aop

导入context约束,在xml开启扫描包中类的注解。

注解:

@component(“”)

@scope(“”)

@value(“”)

@AutoWired自动属性注入,根据类型注入

@Qulifiler指定注入的对象的名称

@Resource指定对象的名称注入

@postConstract初始化方法

@preDestroy销毁方法

2)Spring aop开发

封装了动态代理技术,来体现aop

Cglib对目标对象继承代理。

3)Spring aop 名词

Join point :连接点,所有可以织入通知的方法。

Point cut:切入点,需要|已经织入通知的方法

Advice:需要增强的代码

Weaving:将通知应用的切点的过程

Target:目标对象、

Proxy:代理对象

aspect:切面,切入点+通知、

4)aop步骤

导包:4+2+aop+aspect

准备目标对象+通知类

前置通知

后置通知

环绕通知

异常拦截通知

后置通知无论如何都执行

5. 配置文件中配置,导入aop约束。

1)目标对象

2)通知对象

3)<aop:config>

<aop:point-cut id=”切点名称” expression=”execution(切点表达式)”/>

<aop:aspect ref=”通知对象名称”>

 <aop:before method=”” pointcut-ref =””>

 <aop:after-returning method=”” pointcut-ref=””>

 <aop:around method=”” pointcut-ref=””>

 <aop:after-throwing method=”” pointcut-ref=””>

 <aop:after method=”” pointcut-ref=””>

</aop:aspect>

  </aop:config>

6. 使用注解完成aop

1)导包 4+2  aop+aspect  aop联盟+weaving

2)准备目标对象

3)准备通知类

4)配置文件中配置,导入aop约束

   1目标对象

   2 通知对象

   3 <aop:aspect-autoproxy>开启注解aop

5)@aspect 指定当前为通知类

   @before 前置通知

   @after-returnning 后置通知

   @around 环绕通知

   @after-throwing 异常拦截通知方法

   @after 后置通知方法

6)@pointCut 抽取切点表达式

 18.01.24,web学习第四十五天,还有半年,努力吧青年 Spring第三天 aop事务配置+Spring整合jdbc操作

18.01.24,web学习第四十五天,还有半年,努力吧青年 Spring第三天 aop事务配置+Spring整合jdbc操作

2. 使用注解代替配置aop 

3. Spring整合jdbc

Spring中提供了一个可以操作数据库的对象,对象封装了jdbc技术。

1)jdbcTemplate JDBC模板对象(高度相似于DButilsQueryRunner

2)准备:导包4+2spring-test+spring-aopjunit测试),c3p0连接池+jdbc驱动,spring-jdbc(模板包)+spring-tx(事务包)包。

测试:

CombopooledDataSource cpds= New ComboPooledDataSource();

cpds.setDriverClass(“com.mysql.jdbc.Driver”);

cpds.setjdbcURL(“jdbc:mysql:///wly”);

cpds.setUser(“root”);

cpds.setPassword(“root”);

JdbcTemplate jt=new JdbcTemplate();

jt.setDataSource(cpds);

Jt.execute(sql);

4.Spring jdbcTemplate的用法

1)当查询返回为值类型,如数量可使用:

String sql=”select count(*) from user”;

Integer count=jt.queryForObject(sql,Integer.class);

2)当查询单个对象时:

String sql=”select  ”;

3)当查询很多个对象时:

String sql=”select * from user”;

List<User> list=jt.query(sql,new RowMapper<User>(){

@overried

  Public User mapRow(ResultSet rs,int arg1){

   USer u=new User();

   u.setId(rs.getInt(“id”));

   u.setName(rs.getString(“name”));

   return u;

  }

});

4)向数据库插入数据、删除数据、更改数据:

Jt.update(sql,uuser.getName());

均是update方法。

5. 整合连接池&JDBC模板&Dao配置到spring容器

1)将连接池放入Spring容器

 18.01.24,web学习第四十五天,还有半年,努力吧青年 Spring第三天 aop事务配置+Spring整合jdbc操作

2)将jdbcTemplate放入jdbc容器

 18.01.24,web学习第四十五天,还有半年,努力吧青年 Spring第三天 aop事务配置+Spring整合jdbc操作

3)将USerDao放入jdbc容器

UserDao是那个需要Template进行数据库操作的类。

 18.01.24,web学习第四十五天,还有半年,努力吧青年 Spring第三天 aop事务配置+Spring整合jdbc操作

6. 对于的扩展

操作类中jdbcTemplate可以不new可以此操作类继承jdbcDaoSupport

此类方法中用到的jc均被super.getJdbcTempLate()得到、。

配置文件更改:

不需要将jdbcTemplate注入到容器了,直接UserDao类属性关联数据源dataSource即可。

 18.01.24,web学习第四十五天,还有半年,努力吧青年 Spring第三天 aop事务配置+Spring整合jdbc操作

7. 读取properties内配置的连接池

有时候需要将配置文件中配置的连接池配置到单独的properties中。

properties中写键值对有一个经验问题:

 18.01.24,web学习第四十五天,还有半年,努力吧青年 Spring第三天 aop事务配置+Spring整合jdbc操作

有可能键名和关键词重复导致读不出来:所以加前缀。。。

 18.01.24,web学习第四十五天,还有半年,努力吧青年 Spring第三天 aop事务配置+Spring整合jdbc操作

8. String中的aop事务

1Spring封装了管理事务的代码:打开事务,提交事务,回滚事务

事务操作对象:因为在不同平台,操作事务的代码不同,Spring提供了一个接口:PlatformTransactionManager:平台事务管理器

在不同的平台使用不同的实现类:

JDBCTransactionManager

HibernateTransactionManager

注意:在spring中玩事务管理,最为核心的对象是TransactionManager对象。

2Spring管理事务的属性的介绍:

事务传播行为:比如a()方法调用b()方法。

事务传播行为决定业务方法之间调用,事务应该如何处理。使用默认

Propagation_required 支持当前事务,如果不存在,就创建一个(默认)。其它都扯淡

3)是否只读!

 18.01.24,web学习第四十五天,还有半年,努力吧青年 Spring第三天 aop事务配置+Spring整合jdbc操作

9. 演示Spring aop的事务操作

1)银行转账演示

2)spring配置事务 抽取

编码式  略

Xml配置事务aopaop):

Spring为我们提供了事务通知。我们只需要配置即可。

1)导包:aop+aspect+aop联盟+weaving织入包。

2)导入约束(命名空间)tx约束  之前导过beanscontextaop这事第四个。其实一共需要导入四个约束:

  Beans是最基本的(那个bean元素)

  context:注解+读取properties配置文件

  aop:配置aop用的,织入目标对象。

  tx:配置事务通知的

3)开始配置:前提:有目标对象

 18.01.24,web学习第四十五天,还有半年,努力吧青年 Spring第三天 aop事务配置+Spring整合jdbc操作

 18.01.24,web学习第四十五天,还有半年,努力吧青年 Spring第三天 aop事务配置+Spring整合jdbc操作


使用注解配置事务aop

 18.01.24,web学习第四十五天,还有半年,努力吧青年 Spring第三天 aop事务配置+Spring整合jdbc操作

在相应的方法上配置事务(可以配置到类上(所有方法均生效))可以同时配置,就近原则。

18.01.24,web学习第四十五天,还有半年,努力吧青年 Spring第三天 aop事务配置+Spring整合jdbc操作