Spring框架学习笔记
Spring是Java平台上的开源应用框架,起源于Rod Johnson于2002年所著的《Expert One-on-One:J2EE Design and Development》,2003年Rod公开了框架源码,2004年1.0版Spring正式发布。
框架优势:
- 有效组织中间层对象
- 实现面向接口编程的范式
- 易于进行单元测试
- 简化了数据库访问层
依赖注入与控制反转
传统上,被调用者实例由调用者创建,Spring框架通过依赖注入,使调用者无需关心实例的常见,实现了面向接口编程,达到了控制反转的目的。
面向切面编程
为分散的对象添加公共的行为,通过AOP,完成公共逻辑的统一管理,减少了系统中的重复代码,降低了模块件间的耦合,提高了系统的可维护性。
- Aspects模块集成了AspectJ
- Instrumentation模块提供了class instrumentation和classloader实现
主要模块
核心容器[Core Contrainer]
- Beans、Core
提供基本功能:创建、配置和管理Bean - Context:扩展BeanFactory,提供上下文信息,添加了I18N、资源加载、校验等功能
- Expression Language:用于访问和操纵运行时对象
AbstractApplicationContext
1 | public void refresh() throws BeansException, IllegalStateException { |
BeanFactory详解
1 | //Bean Factory 接口 |
数据访问
- ORM模块提供对象关系映射API,集成了JPA、JDO、hibernate、iBatis
- OXM:提供Object/XML映射抽象
- JMS模块包含了发布和订阅特性
- Transaction模块提供了对声明式和编程式事务的支持
Web模块
- 支持Web、Servlet、Struts、Portlet
Test模块
- 支持JUnit
- 支持TestNG
Spring Boot
注解
- Profile
- 使用环境中的ActiveProfiles来标明context,从而设置不同的参数
@Profile("dev") or @Profile("prod")
- context.getEnvitonment().setActiveProfiles(“prod”)
- Application Event
- 自定义ApplicationEvent
- 自定义ApplicationListener
- 使用容器发布事件
- SpringAware
- 通过对应的Aware接口,使Bean获取对应的信息
- BeanNameAware
- BeanFactoryAware
- Concurrent
- ThreadPoolTaskExecutor:实现了一个基于线程池的TaskExecutor
- Scheduled
- 定时任务