面试记录:IOC 与 AOP

什么是ioc,ioc 的好处?

ioc(Inverse of Control:控制反转) ,一种设计思想, 将原本在程序中手动创建对象的控制权,交由 spring 框架来管理。ioc 在不同的语言有不同的实现。
所谓控制反转,意为将在程序中创建对象的控制权转移到 ioc 容器,调用者只需要在使用时从 ioc 容器中取出,如果一个工具对象的创建过程需要的依赖多,创建过程繁琐,使用 ioc 提前配置好对象即可极大的简化开发,还能达到一个解耦合的效果。
在 spring 中,ioc 容器实际上是个 Map ,Map 中存放各种对象。早期的 spring 框架需要使用 xml 进行对象的配置

AOP

aop(Aspect-Oriented Programming) 面向切面的编程,将与业务无关,却要跟业务方法共同调用的逻辑或责任(事物,日志),进行封装,用增强的形式添加到业务方法,我们不需要去变动业务方法本身就可以执行这些逻辑。
在 spring 中使用 aop 可以用 Spring AOP 或 AspectJ。

AOP 术语

术语含义
目标 Target被通知的对象
代理 Porxy向目标对象通知后生成的代理对象
连接点 JoinPoint目标对象所属的类中定义的方法
切入点 PointCut被拦截/增强的连接点
通知 Advice增强的逻辑/代码
切面 Aspect切入点和通知(已经切入连接点的通知)
织入 Weaving将通知应用到目标对象,进而生成代理对象的过程动作

Spring AOP 和 AspectJ AOP

Spring AOP 是运行时增强, 于 JDK 动态代理(JDK Proxy),AspectJ 则是编译时增强,是字节码操作。
有大量 AOP 操作时,建议使用 AspectJ,性能要强一些。

AspectJ 的通知类型

  • Before 前置
  • After 后置
  • BeforeReturning 返回
  • AfterThrowing 异常
  • Around 环绕
try{
    try{
        //@Before
        method.invoke(..);
    }finally{
        //@After
    }
    //@AfterReturning
}catch(){
    //@AfterThrowing
}

可以使用 @Order 注解规定切面的执行顺序,参数越小有限度越高,继承 Order 接口实现 getOrder()方法也有同样效果。实际上,@Order 的作用是定义Spring 容器中加载 Bean 的顺序。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值