Spring-AOP总结

1、如何用注解的方式来完成属性注入?

**答:**按类型分可以分为值类型注入和引用类型注入。

值类型注入可以通过@Value()注解来完成,该注解既可以声明在属性上,也可以声明在方法上,建议声明在方法上,但是更多的人会声明在属性上,因为更方便。

引用类型注入可以通过三种注解方式来完成,分别为:@Autowired、@Autowired和@Qualifier()二者结合、@Resource()。建议使用@Resource(),但是一般我都会用@Autowired

2、谈谈你对AOP的理解。

AOP,面向切面编程

OOP:面向对象编程

3、Spring实现AOP的原理/实现方式/动态代理的实现方式有几种

答:JDK动态代理和cglib代理。

JDK动态代理有缺陷,就是被代理对象必须实现接口才能产生代理对象,如果没有接口,就不能使用动态代理技术。我们用spring容器来实现动态代理,假如要管理的对象没有实现接口,那么就不能产生代理对象了。为了让所有的对象都能产生动态代理对象,Spring又融入了第三方代理技术cglib代理。Cglib可以对任何类生成代理对象,它的原理是对目标对象进行继承代理,如果目标对象被final修饰,那么该类无法被cglib代理。

动态代理方式:可以在不修改主业务逻辑的前提下,扩展和增强其功能:

AOP其实就是一个动态代理,动态代理干什么它就干什么,它是动态代理的规范化!

4、那么Spring到底使用的是JDK代理,还是cglib代理呢?

**答:**混合使用。如果被代理对象实现了接口,就优先使用JDK代理,如果没有实现接口,就用用cglib代理。

  1. Spring切面可以应用5种类型的通知,哪5种?

答:前置通知(Before)、后置通知(After,在方法完成之后调用通知,无论方法执行是否成功)、后置通知(After-returning,在方法成功执行之后调用通知)、异常通知(After-throwing,在方法抛出异常后调用通知)、环绕通知(Around,在目标方法之前之后都调用)。

相关推荐
Wang's Blog11 小时前
Java 接入Redis: 通用命令与键管理
java·服务器·redis
Wang's Blog11 小时前
Java 接入Redis: 列表集合与有序集合操作命令
java·服务器·redis
Ivanqhz11 小时前
SVD++算法
java·服务器·网络·深度学习·神经网络
码事漫谈11 小时前
别再跟AI说“请”了,它根本不 care——但有个东西它超在意
后端
qq_25183645712 小时前
springboot vue3 开发实现 拼豆管理系统
java·开发语言·ai编程
caoerzhong12 小时前
JeeWMS 开源仓库管理系统全景解读:一套 Java WMS 如何把 WMS/OMS/BMS/TMS 装进同一个系统
java·开源
曹牧13 小时前
Java集合框架:List、ArrayList、Map 和 HashMap
java
顾城猿13 小时前
STOMP 协议
java
郑州光合科技余经理13 小时前
同城外卖小程序开发:下单成功后,后台导出能不能对上用户端状态
开发语言·前端·git·后端·uni-app·php·ai编程
+VX:Fegn089514 小时前
计算机毕业设计|基于springboot + vue旅游管理系统(源码+数据库+文档)
java·开发语言·vue.js·spring boot·课程设计