springIOC
Spring 是什么
Spring是分层的 Java SE/EE应用 full-stack 轻量级开源框架,以 IoC(Inverse Of Control:反转控制)和 AOP(Aspect Oriented Programming:面向切面编程)为内核。
提供了展现层 SpringMVC和持久层 Spring JDBCTemplate以及业务层事务管理等众多的企业级应用技术,还能整合开源世界众多著名的第三方框架和类库,逐渐成为使用最多的Java EE 企业应用开源框架
Spring的优势(理解)
方便解耦,简化开发;
AOP 编程的支持
声明式事务的支持
方便程序的测试
Spring的体系结构
IOC:Inversion of Control 控制反转
常见的系统:里面有大量的对象相互之间进行调用,产生耦合。我们不使用框架的代码就是这种情况。
软件系统在没有引入IOC容器之前,对象A依赖于对象B,那么对象A在初始化或者运行到某一点的时候,自己必须主动去创建对象B或者使用已经创建的对象B。无论是创建还是使用对象B,控制权都在自己手上。
Spring IOC 可以简单理解为,帮我们程序员创建对象,和注入对象,销毁对象。程序员只需要通过配置的方式就可以。写代码的时候,不关心这些对象怎么来的,只需要用就行了。
DI:Dependency Injection 依赖注入
2004年,Martin Fowler探讨了同一个问题,既然IOC是控制反转,那么到底是“哪些方面的控制被反转了呢?”,经过详细地分析和论证后,他得出了答案:“获得依赖对象的过程被反转了”。控制被反转之后,获得依赖对象的过程由自身管理变为了由IOC容器主动注入。于是,他给“控制反转”取了一个更合适的名字叫做“依赖注入(Dependency Injection)”。他的这个答案,实际上给出了实现IOC的方法:注入。所谓依赖注入,就是由IOC容器在运行期间,动态地将某种依赖关系注入到对象之中。
所以,依赖注入(DI)和控制反转(IOC)是从不同的角度的描述的同一件事情,就是指通过引入IOC容器,利用依赖关系注入的方式,实现对象之间的解耦。
不论是DI还是IOC就是解决了对象的创建和组装的问题。程序员只需要关注如何使用这些对象,而无需关心这些对象是如何被创建和关联起来的。这是一个巨大的进步,也是 Spring 的神来之笔。
当然在Spring之前也提出了很多解决对象的创建和组装的解决方案,比如设计模式的工厂方法模式、建造者模式等等