Spring框架是由于软件开发的复杂性而创建的。Spring使用的是基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅仅限于服务器端的开发。从简单性、可测试性和松耦合性角度而言,绝大部分Java应用都可以从Spring中受益。
Spring是什么?
Spring 是轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。在框架中,各类型的功能被抽象成一个个的Bean ,spring 容器对此进行统一管理。
Spring有什么优势?
- 方便解耦,简化开发。
- 通过Spring 提供的IoC 容器,可以将对象间的依赖关系交由Spring 进行控制,避免硬编码所造成的过度程序 耦合。用户也不必再为单例模式类、属性文件解析等这些很底层的需求编写代码,可以更专注于上层的应用。
- AOP编程的支持
- 声明式事务的支持
- 方便程序的测试
- 方便集成各种优秀框架
- 降低JavaEE API的使用难度
Spring 对 JavaEE API (如JDBC、JavaMail、远程调用等)进行了薄薄的封装层,使这些API 的使用难度大为 降低。
解释一下Spring的IOC控制反转
在应用加载的时候,将我们所需要的对象存入容器中,通过工厂来从容器中获取指定的对象。以前我们获取对象通过
new 的方式,现在管工厂要,由工厂创建,这种被动的方式就是控制反转。他包括依赖注入di 和依赖查找dl。 ioc 的目的就是削减计算机程序的耦合。比如汽车,有一个轮子,你用new的方式,轮子的尺寸一变,你new的要全变。 使用ioc从工厂拿,告诉他我要个轮子。轮子改变的话内部进行调整即可。
Spring依赖注入的什么?
依赖注入是DI,是Spring ioc 的具体实现。我们的程序在编写时,通过控制反转,把对象的创建交给了Spring,但 是在代码中不可能出现没有依赖的情况。ioc 解耦只是降低他们的依赖关系,但不会消除。业务层还是会调用持久 层,现在这种调用关系交给Spring 进行处理了。
BeanFactory和ApplicaitonContext的区别?
BeanFactory 是Spring 容器的顶层接口。 ApplicationContext 是他的子接口。
区别:
创建对象的时间点不同, ApplicationContext一读取配置文件就会创建对象。
BeanFactory:什么时候使用什么时候创建对象。
ApplicationContext 可以预先加载,坏处是浪费内存。 BeanFactory 好处是节约内存,坏处是速度比较慢。