码迷,mamicode.com
首页 > 编程语言 > 详细

spring复习(二)

时间:2020-07-05 13:32:26      阅读:79      评论:0      收藏:0      [点我收藏+]

标签:--   简单   aspect   init   根据   advice   ring   poi   express   

1.基于注解ioc

1.扫描包<context:component-scan>
2.穿件对象交给容器 @Component  相当于:<bean id="" class="">  
3.依赖注入@Autowired 相当于:<property name="" ref="">   
4.@Value 注入基本数据类型和 String 类型数据的 

2.aop基于xml以及注解的AOP配置

什么是AOP

简单的说它就是把我们程序重复的代码抽取出来,在需要执行的时候,使用动态代理的技术,在不修改源码的
基础上,对我们的已有方法进行增强

实现方式:   动态代理

1.JDK动态代理 通过Proxy类实现

2.CGLIB

3.基于代理类 ProxyFactoryBean创建AOP代理

4.AspectJ

--基于xml

aop:aspect:
作用: 用于配置切面。
属性:
id:给切面提供一个唯一标识。
ref:引用配置好的通知类 bean 的 id。

<aop:aspect id="txAdvice" ref="txManager">
<!--配置通知的类型要写在此处-->
</aop:aspect>

aop:before
作用: 用于配置前置通知。
指定增强的方法在切入点方法之前执行
属性:
method:用于指定通知类中的增强方法名称
ponitcut-ref:用于指定切入点的表达式的引用
poinitcut:用于指定切入点表达式
执行时间点: 切入点方法执行之前执行 <aop:before method="beginTransaction" pointcut-ref="pt1"/>

切入点:
<!--( * com.service.impl.*.*(..)) 第一个*代表返回类型,表示所有返回类型,第二个*表示类名,第三个*表示所有方法 ..表示方法中的任意参数-->

--基于注解

<!--配置spring开启注解AOP的支持-->
<aop:aspectj-autoproxy/>
@Pointcut("execution(* com.service.impl.*.*(..))")

--spring通知类型

<!--配置AOP-->
<aop:config>
<!--配置切面-->
<!--配置切入点表达式 下面的配置可以引用它-->
<aop:pointcut id="pt" expression="execution( * com.service.impl.*.*(..))"/>
<aop:aspect id="logAdvice" ref="logger">
<!--前置通知-->
<!--( * com.service.impl.*.*(..)) 第一个*代表返回类型,表示所有返回类型,第二个*表示类名,第三个*表示所有方法 ..表示方法中的任意参数-->
<aop:before method="beforePrintLog" pointcut="execution( * com.service.impl.*.*(..))"/><!--1.第一种配置方法-->
<!--后置通知-->
<aop:after-returning method="afterPrintLog" pointcut-ref="pt"/><!--2.第二种配置方法引用切入点表达式-->
<!--异常通知-->
<aop:after-throwing method="throwPrintLog" pointcut-ref="pt"/>
<!--最终通知-->
<aop:after method="FinalPrintLog" pointcut-ref="pt"/>

<!--环绕通知 (当配置了环绕通知后,前置通知不再执行了)-->
<!-- <aop:around method="xxx" pointcut-ref="pt"></aop:around>-->
</aop:aspect>
</aop:config>

3.jdbcTemlate及Spring事务控制

jdbcTemlate

它是 spring 框架中提供的一个对象,是对原始 Jdbc API 对象的简单封装。spring 框架为我们提供了很多 的操作模板类。 

--使用

//1.获取 Spring 容器 ApplicationContext ac = new ClassPathXmlApplicationContext("bean.xml");
//2.根据 id 获取 bean 对象 JdbcTemplate jt = (JdbcTemplate) ac.getBean("jdbcTemplate");
//3.执行操作 jt.execute("insert into account(name,money)values(‘eee‘,500)");

Spring事务控制

spring 的事务控制都是基于 AOP 的,它既可以使用编程的方式实现,也可以使用配置(声名式)的方式实现。

重点是使用配置的方式实现

1.编程式事务管理

...

2.声名式事务管理

 

1.基于xml

基于xml
<!--2.配置事务通知-->
<tx:advice id="txAdvice" transaction-manager="transactionManager">
<!--5.配置事务的属性-->
<tx:attributes>
<!-- <tx:method xxx="xxx" ,xxx="xxx" ....配置事务的属性
isolation:用于指定事务的隔离级别。默认值是DEFAULT,表示使用数据库的默认隔离级别。
propagation:用于指定事务的传播行为。默认值是REQUIRED,表示一定会有事务,增删改的选择。查询方法可以选择SUPPORTS。
read-only:用于指定事务是否只读。只有查询方法才能设置为true。默认值是false,表示读写。
timeout:用于指定事务的超时时间,默认值是-1,表示永不超时。如果指定了数值,以秒为单位。
rollback-for:用于指定一个异常,当产生该异常时,事务回滚,产生其他异常时,事务不回滚。没有默认值。表示任何异常都回滚。
no-rollback-for:用于指定一个异常,当产生该异常时,事务不回滚,产生其他异常时事务回滚。没有默认值。表示任何异常都回滚。
-->
<tx:method name="transfer" propagation="REQUIRED" read-only="false"/>
</tx:attributes>
</tx:advice>

2.注解

注解:<!--2.开启spring对注解事务的支持-->
<tx:annotation-driven transaction-manager="transactionManager"/>

@Transactional //在需要的类或方法开启事务 增删改数据发生错误 就会回滚数据防止错误

 

spring复习(二)

标签:--   简单   aspect   init   根据   advice   ring   poi   express   

原文地址:https://www.cnblogs.com/july7/p/13242049.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!