Spring是一个开源框架,为了解决企业级应用开发的复杂性而创建的,使用Spring可以让简单的JavaBean实现之前只有EJB才可以完成的事。
Spring的核心:
- DI(依赖注入):在Spring框架负责创建Bean对象时,动态的将依赖对象注入都Bean组件。
- AOP(面向切面编程):在面向切面编程的思想中,我们将一个个对象中的某些类似的方面横向抽成一个切面,对这个切面进行一些如控制权限、事务管理、记录日志等公共操作处理的过程就是面向切面编程的思想。它的底层是动态代理。
- IOC(控制反转):将原本在程序中手动创建对象的控制权交由Spring框架管理。
Spring容器:
- bean 工厂( org.springframework.beans.factory.BeanFactory):最简答的容器,提供基本的DI支持。
- 应用上下文(org.springframework.context.ApplicationContext ):基于BeanFactory构建,提供应用框架级别服务。
Spring Bean 的生命周期
单例对象:当容器创建时单例对象出生,只要容器还在,对象就一直活在,当容器销毁时,对象也随之消亡
多例对象:当使用对象时Spring框架为我们创建,只要对象在使用中它就一直存在活着,当对象长时间不使用,且没有别的对象引用时,由java的垃圾回收器回收。
Spring的模块
核心容器(core container):包括Core、Beans、Context、EL、
core模块:封装了框架依赖的最底层部分,包括了资源访问、类型转换以及一些常用的工具类。
Beans模块:提供了框架的基础部分,包括反转控制和依赖注入。
Context模块:以Core和Beans为基础,集成Beans模块功能并添加资源绑定、数据验证、国际化、javaEE支持、容器生命周期、事件传播等。核心接口是ApplicationContext;
El模块:提供了强大的表达式语言支持。
Aop 面向切面编程
Aspects:提供了对AspectJ的集成,AspectJ提供了比Spring ASP更加强大的功能。
Data Access/Integration(数据访问与集成)
JDBC:提供了JDBC的样例模版,使用这些模版能够消除传统冗长的JDBC编码还有必要的事务处理。
ORM:提供与流行的对象关系映射框架的无缝集成。
JMS:(java Messageing Service) ,用于在二个应用程序之间,或分布式系统中发送消息,进行异步通信
OXM:
事务管理:
Web模块
包括:Web、Web-Servlet、WebSocket、Web-Porlet模块
Instrumentation模块
提供了为JVM添加代理对象的功能。
Test模块
支持使用JUnit和TestNG对Spring组件进行测试。