-
什么是Spring
Spring是一个开源框架,是为解决企业应用开发的复杂性而创建的。
Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中收益
它是一个容器框架,用来装javabean(java对象),中国层框架可以起一个连接作用,比如说把Struts和hibernate粘合在一起运行。简单来说,Spring是一个轻量级的控制反转(IOC)和面向切面(AOP)的容器框架。
在实际开发中,通常服务器端采用三层体系架构,分别为表示层(web)、业务逻辑层(service)、持久层(Dao),Spring对每一层都提供了技术支持
表示层——在表示层提供与Struts等框架的整合
业务逻辑层——在业务逻辑层可以管理事物、记录日志等
持久层——在持久层可以整合Hibernate、JdbcTemplate等技术 -
Spring的优点
(1)使用Spring的IOC容器,将对象之间的依赖关系交给Spring,降低组件之间的耦合性,让我们更专注于应用逻辑
(2)可以提供众多服务,事物管理,WS等
(3)AOP的很好支持,方便面向切面的编程
(4)对主流的框架提供了很好的集成支持,如hibernate,Struts2,JPA等
(5)Spring DI机制降低了业务对象替换的复杂性
(6)Spring属于低侵入,代码污染极低
(7)Spring的高度可开放性,并不强制依赖于Spring,开发者可以自由选择Spring部分或者全部 -
Spring的体系结构
Spring采用了分层的架构,可分为20个模块
(1)核心模块(CoreContainer)
Spring核心模块包含有Core、Beans、Context和Expression Language四个小模块。其中,Core和Beans是整个Spring框架的基础部分,也是Spring的核心依赖注入IOC与DI的最基本实现,Spring的其他模块大多依赖这两个功能
spring-core:其他模块的基础核心,包含Spring框架的核心工具类,Spring其他模块都要使用该包里面的类
spring-beans:Spring定义bean的支持,负责访问配置文件、创建和管理bean,支持依赖注入和控制反转的相关操作。bean工厂类就在这个jar包中
spring-context:spring运行时容器,在Core和Beans的基础上,提供对Spring的上下文支持,ApplicationContext是该包的关键,通过它,可以方便快捷的取出依赖注入的Bean
spring-expresssion:spring表达式语言,帮助spring在运行时查询和操作对象。支持设置/获取对象的属性值,方法的调用
(2)AOP模块
spring-aop:对于代理AOP的支持
spring-Aspects:对于AspectJ的AOP支持
(3)web模块
spring-web:提供基础的web功能,在web项目中提供Spring的容器
spring-webmvc:提供基于Servlet的SpringMVC
spring-websocket:提供websocket功能
spring-webmvc-portlet:提供porlet的支持
(4)数据库模块
spring-jdbc:提供jdbc访问数据库的支持,包含了Spring对数据库访问操作进行封装的所有类,它提供了一个JDBC的抽象层,从而实现对其他厂商的支持
spring-tx:提供对事物的支持
spring-orm:提供对象关系-映射的支持,使得spring可以方便的整合其他第三方ORM库如JAP,Mybatis、Hibernate等
spring-xml:提供对象xml映射支持
spring-jms:提供对Java消息服务的支持 -
spring的核心容器
spring容器会负责控制程序之间的关系,而不是由程序代码控制。spring为我们提供了两种核心容器,分别为BeanFactory和ApplicationContext,
BeanFactory:创建BeanFactory实例时,需要提供Spring所管理容器的详细配置信息,这些信息通常采用XML文件形式来管理,其加载配置信息的语法如下:
BeanFactory beanFactory=new XmlBeanFacoty(new FileSystemResource("F:/applicationContext.xml"));