一步迅速了解Spring框架中的几大特点

一,Spring框架的特点1 :AOP

        1, AOP全称:  Aspect Oriented Programming

        2,  AOP主要是用面向切面编程思想处理问题,面向切面编程是对面向对象编程的补充和延续

        3,面向切面编程思想

        面向切面编程思想是将我们程序中的非业务代码提交事务,打印日志,权限验证,统一的异常处理,等等提取分离出来,然后在调用业务代码时,通过一个代理对象帮助我们调用这些提取出来的非业务代码,这样在业务代码不用显示的调用非业务代码,做到的业务代码和非业务代码的分离,降低了耦合度

        4,核心原理:

        使用动态代理的方式在执行方法前后或者出现异常的时候做加入相关的逻辑

        好处:模块之间的耦合度降低了

        原理:动态代理模式 给业务代码生成代理对象

        AOP 编程思想是Java中的,不是Spring专有的,是Spring使用AOP这一编程思想

        5,使用案例:

        事务处理:开启事务,关闭事务,出现异常后回滚事务
        权限判断:在执行方法前,判断是否具有权限
        日志:在执行前进行日志处理

二,AOP的基本概念

连接点(Joinpoint):类中可以被增强(加功能)的方法,这个方法就被称为连接点

切入点(pointcut):类中实际被增强的方法(实际实现的连接点)

通知(Advice): 通知是指一个切面在特定的连接点要做的事情(增强的功能)。通
知分为方法执行前通知,方法执行后通知,环绕通知等

目标(Target):代理的目标类(连接点和切入点所在的类)

代理(Proxy):向目标对象 应用通知时 创建的代理对象

三,关于spring框架中的 AOP 的实现

        对于 AOP 这种编程思想,很多框架都进行了实现。Spring 就是其中之一,
可以完成面向切面编程。
        AspectJ 是一个基于 Java 语言的 AOP 框架,它提供了强大的 AOP 功能,且其实
现方式更为简捷,使用更为方便, 而且还支持注解式开发。所以,Spring 又
将 AspectJ 的对于 AOP 的实现也引入到了自己的框架中。

1,第一步 下载 AOP 相关 jar

<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aspects</artifactId>
<version>5.2.2.RELEASE</version>
</dependency>

2,第二步基于注解方式实现

启动 AspectJ 支持:<aop:aspectj-autoproxy />

<aop:aspectj-autoproxy />

在Spring.xml文件中添加自动代理

四,AspectJ 中常用的通知有五种类型:

前置通知,后置通知,环绕通知,异常通知,返回通知.

@Before 前置通知:方法执行之前

@After 后置通知:方法执行之后,无论是否出现异常

@AfterReturnning 返回通知:方法成功执行之后通知,出现异常不执行

@AfterThrowing 异常通知:抛出异常之后通知

@Around 环绕通知:方法执行前后都有通知

实例:

定义通知:
@Component
@Aspect
public class AOPDemo {
@Before("execution(* com.ff.spring.dao.UserDao.*(..))")
public void saveLog(){
System.out.println("saveLog");
}
@AfterThrowing(value = "execution(*com.ff.spring.dao.UserDao.*(..))",throwing = "e")
public void afterthrow(Throwable e){
System.out.println("afterthrow");
}
public void aroundAdvice(ProceedingJoinPoint joinPoint){
try {
//前置通知
Object[] objects = joinPoint.getArgs();
joinPoint.proceed();//调用我们自己的目标方法
//返回通知
} catch (Throwable throwable) {
throwable.printStackTrace();
//异常通知
}
//后置通知
}
}

表达式解析

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值