为了解决企业应用开发的复杂性而创建的一个轻量级的Java 开发框架
简单来说,Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。
Spring框架的目标是使得Java EE应用程序的开发更加简捷
基本框架:AOP、JEE、WEB、CORE、DAO、ORM
三种依赖注入方式:属性(Setter方法)注入,构造注入和接口注入
Spring DAO:Spring提供了对JDBC的操作支持:JdbcTemplate模板工具类 。
Spring AOP:Spring提供面向切面的编程,可以给某一层提供事务管理
Spring Core:提供IOC容器对象的创建和处理依赖对象关系 。
Spring JEE:J2EE开发规范的支持,例如EJB 。
Spring WEB:Spring提供了对Struts、Springmvc的支持,支持WEB开发。与此同时Spring自身也提供了基于MVC的解决方案
Spring ORM:Spring可以与ORM框架整合
IOC容器
就是具有依赖注入功能的容器,是可以创建对象的容器,IOC容器负责实例化、定位、配置应用程序中的对象及建立这些对象间的依赖。通常new一个实例,控制权由程序员控制,而"控制反转"是指new实例工作不由程序员来做而是交给Spring容器来做。
简单来说就是把复杂系统分解成相互合作的对象,这些对象类通过封装以后,内部实现对外部是透明的,从而降低了解决问题的复杂度,而且可以灵活地被重用和扩展。IOC理论提出的观点大体是这样的:借助于“第三方”实现具有依赖关系的对象之间的解耦,如下图:
BeanFactory 是所有Spring应用的核心。Spring框架是建立在这个模块之上的,这也使得Spring成为一个容器。
IOC实现了松耦合。依赖被注入到对象,而不是创建或寻找依赖对象
AOP容器(切面编程)
可以为某一类对象进行监督和控制从而达到对一个模块扩充的功能。比如说日志、安全、缓存等那些与业务无关,却为业务模块所共同调用的逻辑或责任封装起来,便于减少系统的重复代码
切面(Aspect):其实就是共有功能的实现。
通知(Advice):是切面的具体实现。
连接点(Joinpoint):就是程序在运行过程中能够插入切面的地点。
切入点(Pointcut):用于定义通知应该切入到哪些连接点上。
目标对象(Target):就是那些被通知的对象。
代理对象(Proxy):将通知应用到目标对象之后被动态创建的对象。
织入(Weaving):将切面应用到目标对象从而创建一个新的代理对象的过程。
把应用的业务逻辑与系统的服务分离开来
Bean
每个Bean定义只存在一个实例,即Bean的scope默认是singleton的
SpringMVC
SpringMVC实现了mvc设计模式的web框架。
首先用户发出请求,请求到达SpringMVC的前端控制器(DispatcherServlet),前端控制器根据用户的url请求处理器映射器查找匹配该url的handler,并返回一个执行链,前端控制器再请求处理器适配器调用相应的handler进行处理并返回给前端控制器一个modelAndView,前端控制器再请求视图解析器对返回的逻辑视图进行解析,最后前端控制器将返回的视图进行渲染并把数据装入到request域,返回给用户。
spring mvc的入口是servlet,而struts2是filter。
spring会稍微比struts快。spring mvc是基于方法的设计,而sturts是基于类