原文出处: 朱小厮
1. Spring框架的浸染
轻量:Spring是轻量级的,根基的版本巨细为2MB
节制反转:Spring通过节制反转实现了松散耦合,工具们给出它们的依赖,而不是建设或查找依赖的工具们。
面向切面的编程AOP:Spring支持面向切面的编程,而且把应用业务逻辑和系统处事分隔。
容器:Spring包括并打点应用中工具的生命周期和设置
MVC框架: Spring-MVC
事务打点:Spring提供一个一连的事务打点接口,可以扩展到上至当地事务下至全局事务JTA
异常处理惩罚:Spring提供利便的API把详细技能相关的异常
2. Spring的构成
Spring由7个模块构成:
Spring Core: 焦点容器提供 Spring 框架的根基成果。焦点容器的主要组件是BeanFactory,它是工场模式的实现。BeanFactory 利用节制反转 (IOC) 模式将应用措施的设置和依赖性类型与实际的应用措施代码分隔。
Spring 上下文:Spring 上下文是一个设置文件,向 Spring 框架提供上下文信息。Spring 上下文包罗企业处事,譬喻 JNDI、EJB、电子邮件、国际化、校验和调治成果。
Spring AOP:通过设置打点特性,Spring AOP 模块直接将面向方面的编程成果集成到了 Spring 框架中。所以,可以很容易地使 Spring 框架打点的任何工具支持 AOP。Spring AOP 模块为基于 Spring 的应用措施中的工具提供了事务打点处事。通过利用 Spring AOP,不消依赖 EJB 组件,就可以将声明性事务打点集成到应用措施中。
Spring DAO:JDBC DAO 抽象层提供了有意义的异常条理布局,可用该布局来打点异常处理惩罚和差异数据库供给商抛出的错误动静。异常条理布局简化了错误处理惩罚,而且极大地低落了需要编写的异常代码数量(譬喻打开和封锁毗连)。Spring DAO 的面向 JDBC 的异常遵从通用的 DAO 异常条理布局。
Spring ORM:Spring 框架插入了若干个 ORM 框架,从而提供了 ORM 的工具干系东西,个中包罗 JDO、Hibernate 和 iBatis SQL Map。所有这些都遵从 Spring 的通用事务和 DAO 异常条理布局。
Spring Web 模块:Web 上下文模块成立在应用措施上下文模块之上,为基于 Web 的应用措施提供了上下文。所以,Spring 框架支持与 Jakarta Struts 的集成。Web 模块还简化了处理惩罚多部门请求以及将请求参数绑定到域工具的事情。
Spring MVC 框架:MVC 框架是一个全成果的构建 Web 应用措施的 MVC 实现。通过计策接口,MVC 框架酿成为高度可设置的,MVC 容纳了大量视图技能,个中包罗 JSP、Velocity、Tiles、iText 和 POI。
3. Spring容器
Sping的容器可以分为两种范例
- BeanFactory:(org.springframework.beans.factory.BeanFactory接口界说)是最简答的容器,提供了根基的DI支持。最常用的BeanFactory实现就是XmlBeanFactory类,它按照XML文件中的界说加载beans,该容器从XML文件读取设置元数据并用它去建设一个完全设置的系统或应用。
- ApplicationContext应用上下文:(org.springframework.context.ApplicationContext)基于BeanFactory之上构建,并提供面向应用的处事。
4. ApplicationContext凡是的实现
ClassPathXmlApplicationContext:从类路径下的XML设置文件中加载上下订亲义,把应用上下订亲义文件当做类资源。
FileSystemXmlApplicationContext:读取文件系统下的XML设置文件并加载上下订亲义。
XmlWebApplicationContext:读取Web应用下的XML设置文件并装载上下订亲义。
ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
5. IOC & DI
Inversion of Control, 一般分为两种范例:依赖注入DI(Dependency Injection)和依赖查找(Dependency Lookup).依赖注入应用较量遍及。
Spring IOC认真建设工具,打点工具(DI),装配工具,设置工具,而且打点这些工具的整个生命周期。
利益:把应用的代码量降到最低。容器测试,最小的价钱和最小的侵入性使松散耦合得以实现。IOC容器支持加载处事时的饿汉式初始化和懒加载。
DI依赖注入是IOC的一个方面,是个凡是的观念,它有多种表明。这观念是说你不消床架工具,而只需要描写它如何被建设。你不在代码里直接组装你的组件和处事,可是要在设置文件里描写组件需要哪些处事,之后一个IOC容器帮助把他们组装起来。
IOC的注入方法:1. 结构器依赖注入;2. Setter要领注入。
6. 如何给spring容器提供设置元数据
XML设置文件
基于注解的设置
基于Java的设置@Configuration, @Bean