浅谈我对Spring框架的理解(IOC/AOP)

java界乃由五大传统框架:

1.核心业务层框架(地位不可动摇)Spring,

2.控制层框架:SpringMVC与struts2,

3.持久层框架:MyBatis,Hibernate。

      先从spring说起吧,了解过spring的同学都知道,Spring是一个轻量级的IOC和AOP容器

      Spring的两大核心思想就是IOC(控制反转),DI(依赖注入),AOP(面向切面编程)

     第一章 IOC

       一、那么什么是IOC呢,有反转就会有正转,正转就是你需要用到这个类对象时,自己手动new出来。而反转就是你设计编写好的类不是由你自己创建,而是把创建的权力交予Spring框架的IOC容器。

       IOC的核心实现=配置文件+反射+工厂模式

      Spring IOC会在在创建对象判断是否有依赖于另一个对象,IOC容器会将该对象依赖的对象的引用注入到创建的这个对象中。依赖注入提倡的是面向接口编程。

       二、以我的理解来看,spring思想是将应用程序的主动性改为被动性,以前我们需要用到什么类,应用就自己new什么类,感觉应用程序是老大,但是,正是如此,类于类之间的耦合度就会越来越高,不方便测试。程序中的每一个类变得不可分割。而spring的出现改变了这种状态,它通过IOC于DI思想,将创建的权力交给IOC,注入的问题交给DI,我们根本不需要考虑什么时候new这个类对象,我们只需要在applicationContext.xml中配置bean,通过注入的方式,注入给类中的属性就行了。

        三、正是因为他的特性思想,我们可以将它于持久层框架和控制层框架一起整合,把controller类,mapper接口,service类,action类,dao类等等都交给spring管理,前台发送请求,控制层接收请求,根据url在IOC容器中找到相应的controller类和方法,controller类中又依赖注入了service类,controller再调用service类,service类中又依赖注入了dao类,dao类再对数据库进行操作后,将操作结果返回给service类,service类返回给controller类,controller类再返回给浏览器。这样前后台交互就完成了,然而,在这期间我们并没有new 任何的controller类,service类,dao类,通通是spring创建的,我们只是被动的使用它就行了。这大大降低了程序的耦合度。

     第二章 AOP

        一、AOP其实就是面向切面编程,在动作执行的某个切点来织入相关的逻辑。AOP是通过动态代理机制来实现的。

        在JAVA中一般采用JDK动态代理模式,但是我们都知道,JDK动态代理模式只能代理接口而不能代理类。因此,Spring AOP 会这样子来进行切换,因为Spring AOP 同时支持 CGLIB、ASPECTJ、JDK动态代理。

  • 如果目标对象的实现类实现了接口,Spring AOP 将会采用 JDK 动态代理来生成 AOP 代理类;
  • 如果目标对象的实现类没有实现接口,Spring AOP 将会采用 CGLIB 来生成 AOP 代理类——不过这个选择过程对开发者完全透明、开发者也无需关心。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值