浅谈我对spring框架的理解

    总所周知,java界乃由五大传统框架:1.核心业务层框架(地位不可动摇)spring,2.控制层框架:spring MVC与struts2, 持久层框架:Mybatis,hibernate。

    先从spring说起吧,了解过spring的同学都知道,spring的两大核心思想就是IOC(控制反转),DI(依赖注入),AOP(面向切面编程)。

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

                浅谈我对spring框架的理解_第1张图片

        2)IOC会看你的对象创建是否要依赖于另一个对象,(当然,这需要你在配置文件中配置),IOC容器会把你需要的类对象和该类对象所依赖的所有类对象都创建并且注入,这就是依赖注入。依赖注入提倡接口编程,在项目启动的时候,spring会根据你的配置文件创建所需要的类放入IOC容器中,我们只需要通过spring规定的方式获取。

                浅谈我对spring框架的理解_第2张图片

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

        3.正是因为他的特性思想,我们可以将它于持久层框架和控制层框架一起整合,把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创建的,我们只是被动的使用它就行了。这大大降低了程序的耦合度。

     4.AOP其实就是在某一个执行前,执行后,执行中。加入相应的操作,对于AOP我还不是太理解,只会基本的使用,一般用于记录日志,配置事务等等操作;日后还得继续学习!

    




你可能感兴趣的:(浅谈我对spring框架的理解)