Spring的IOC和AOP的个人理解

  IOC:

    

    什么是IOC?

        IOC是一种编程思想,意思就是“控制翻转”,简单来说,就是将对象的创建权利交给第三方容器。

 

    为什么需要“控制翻转”?

        需要进行类和类之间的解耦

 

    什么是解耦?

        硬编码耦合:当A类中直接new了一个B类,则称之为A类硬编码耦合了B类。如果B类的构造方式发生了变化,则需要去修改A类,如果有很多类都引用了B类,则这些类都要去一一修改,这种编码方式会极大的提高了程序的维护成本。

 

        解耦:消除类和类之间的这种耦合性。将对象的创建方式交给第三方容器,其他类中,如果需要获得这个对象,再从容器中获取(配置、注解的方式进行注入),这种方式的好处在于B类的构造方式发生变化时,对其他所有类没有任何影响。

 

    问题:正式开发时,是否会经常对一个类的构造形式进行修改?如果修改频率不高,IOC是否没有意义?

 

    AOP:

 

    什么是AOP?

        AOP是一种面向切面的编程思想。在实际开发过程中,通常有很多业务,业务一般会分为两部分,一部分是核心业务部分(每个业务都不相同),另一个部分是非核心业务部分(很多业务都相同,比如开启事务、开启资源、记录日志、行为记录.....),将非核心业务代码从整合业务中抽离出来的独立编写的开发模式,就是面向切面编程。

 

    AOP的底层实现原理:

        JDK的动态代理 + Cglib的动态代理

 

    静态代理和动态代理区别:

        静态代理,需要开发者手动的编写代理类,创建代理对象

        动态代理,会自动的创建代理对象

 

    什么是静态代理:

        

 

    为什么Spring要准备JDK的动态代理方式和Cglib的动态代理方式两种?

        当有若干接口的时候,JDK是基于接口实现,因为有接口,所以使系统更加松耦合

        若目标对象没有实现任何接口,spring使用CGLIB库生成目标对象的子类 ,Cglib是基于父类实现,因为代理类与目标类是继承关系,所以不需要有接口的存在。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值