1. 创建spring框架的目的:为了解决企业级java应用开发的复杂性。
2. spring简化开发复杂性的策略:
1) 基于POJO的轻量级和最小侵入性编程;
2) 通过依赖注入和面向接口实现松耦合;
3) 基于切面和惯例进行声明式编程。
基于POJO的轻量级和最小侵入性编程:使用spring框架时,java应用中的bean类不需要继承或实现spring的接口,不至于这个bean类跟框架绑死。
通过依赖注入和面向接口实现松耦合:只能实现松耦合的效果,不存在完全解耦合的,因为只要存在调用别的类的对象就是耦合,实际业务中是不可能存在无耦合情况的。面向接口只需要传入接口的实现类对象即可,不需要传入特定的类对象,达到一定的松耦合效果。使用xml配置好对象的信息后,spring会通过上下文(Application Context接口)来装载bean和维护bean之间的依赖关系。
基于切面进行声明式编程:业务中一般会有事务管理、安全校验、日志记录功能,对于这些模块可以切出一个方法切面。
3. spring容器
在xml里配置的bean实际上都是由spring容器(container)管理,由spring容器来创建、维护不同bean之间的关系以及bean的生命周期(从创建到销毁)。
spring容器有两种,一种是基于beanFactory工厂接口实现的,一种是基于ApplicationContext(上下文)接口实现的,一般都使用上下文接口来实现spring容器,使用getBean()来获取对象。
4. spring的生态圈
spring有庞大的生态圈,将spring扩展到不同的领域,而且提供了与第三方框架的集成点,例如与数据访问框架的集成(orm框架),与web服务的集成(web servlet)等。
实际上spring有自己的jdbc模块,如果开发者不愿意直接使用jdbc,spring提供了orm模块,这个模块并不是去创建自己的orm解决方案,而是对流行的第三方orm框架进行集成,spring的事务管理支持所有的orm和jdbc。