《Spring面试秘籍:金三银四这样答,面试官抢着要(九)》
- 在Spring AOP中,关注点和横切关注的区别是什么?
- 什么是连接点?
- 什么是通知?
- 什么是切点?
- 什么是引入?
- 什么是目标对象?
- 什么是代理?
- 有几种不同类型的自动代理?
- 什么是织入?什么是织入应用的不同点?
中级程序员回答
在Spring AOP中,关注点和横切关注的区别是什么?
关注点就是应用里某个模块具体的行为,简单说就是这个模块想实现的一个功能。比如说用户登录模块,登录功能就是它的关注点。
横切关注点就不一样了,它是整个应用都会用到的功能,而且会影响整个应用。像日志记录,不管哪个模块,可能都需要记录操作日志;安全方面,比如权限验证,每个模块可能都得有;还有数据传输,整个应用的数据传输都得保证安全可靠。这些功能几乎每个模块都需要,所以就是横切关注点。
什么是连接点?
连接点就是在应用程序里的某个位置,在这个地方咱们可以把AOP切面插进去。其实就是程序执行到这个地方的时候,Spring AOP就能在这儿发挥作用了,比如在某个方法调用前或者调用后,都可能是连接点。
什么是通知?
通知就是在方法执行前或者执行后要做的动作,就是一段代码,在程序执行的时候,会被Spring AOP框架触发。Spring切面有五种通知类型:
-
before
:前置通知,在方法执行前就被调用,比如在执行一个业务方法前记录一下开始时间。 -
after
:方法执行完后调用,不管方法执行成功还是失败都会执行,就像方法执行完后记录一下结束时间。 -
after - returning
:只有方法成功完成后才执行,比如方法成功返回数据后,记录一下返回结果。 -
after - throwing
:方法抛出异常退出的时候执行,用来处理异常情况,比如记录异常信息。 -
around
:在方法执行之前和之后都会调用,能在方法执行前后做更多的控制,比如在方法执行前开启事务,执行后提交或回滚事务。什么是切点?
切点就是一个或者一组连接点,通知就在这些位置执行。可以通过表达式或者匹配的方式来指定切点。比如说指定某个包下的所有方法作为切点,那在这些方法执行的时候,相关的通知就会起作用。
什么是引入&#x