Spring简单了解
简介:
Spring 框架是 Java 应用最广的框架,它的成功来源于理念,而不是技术本身。
它的理念包括 IoC (Inversion of Control,控制反转) 和 AOP(Aspect Oriented Programming,面向切面编程)。
Spring框架的常用描述
框架:是能完成一定功能的半成品。
框架能够帮助我们完成的是:项目的整体框架、一些基础功能、规定了类和对象如何创建,如何协作等,当我们开发一个项目时,框架帮助我们完成了一部分功能,我们自己再完成一部分,那这个项目就完成了。
非侵入式设计
从框架的角度可以理解为:无需继承框架提供的任何类 这样我们在更换框架时,之前写过的代码几乎可以继续使用。
轻量级和重量级:
轻量级是相对于重量级而言的,轻量级一般就是非入侵性的、所依赖的东西非常少、资源占用非常少、部署简单等等,其实就是比较容易使用,而重量级正好相反。
javaBean
1、javaBean是一种Java语言写成的可重用组件。
-
为写成JavaBean,类必须是具体和公共的,并且具有无参数的构造器。
-
JavaBean通过提供符合一致性设计模式的公共方法将内部域暴露成员属性。更多的是一种规范,即包含一组set和get方法的java对象。
-
javaBean可以使应用程序更加面向对象,可以把数据封装起来,把应用的业务逻辑和显示逻辑分离开,降低了开发的复杂程度和维护成本。
pojo
2、pojo (Plain Ordinary Java Object)简单的Java对象,实际就是普通JavaBeans,是为了避免和EJB混淆所创造的简称。
-
其中有一些属性及其getter、setter方法的类,没有业务逻辑,有时可以作为VO(value-object)或DTO(Data Transfer Object)来使用。不允许有业务方法,也不能携带connection之类的方法。
-
与javaBean相比,javaBean则复杂很多,JavaBean是可复用的组件,对JavaBean并没有严格的规范,理论上讲,任何一个Java类都可以是一个Bean。
-
但通常情况下,由于JavaBean是被容器创建的,所以JavaBean应具有一个无参的构造器。
-
另外,通常JavaBean还要实现Serializable接口用于实现Bean的持久性。
-
一般在web应用程序中建立一个数据库的映射对象时,我们只能称他为POJO。用来强调它是一个普通的对象,而不是一个特殊的对象,其主要用来指代哪些没有遵从特定的java对象模型、约定或框架(如EJB)的java对象。理想的将,一个POJO是一个不受任何限制的java对象
entity
3、entity 实体bean,一般是用于ORM对象关系映射,一个实体映射成一张表,一般无业务逻辑代码。负责将数据库中的表记录映射为内存中的Entity对象。
容器
在日常生活中容器就是一种盛放东西的器具,从程序设计角度看就是装对象的的对象,因为存在放入、拿出等操作,所以容器还要管理对象的生命周期。
事实上,创建一个EntityBean对象相当于创建一条记录,删除一个EntityBean对象会同时从数据库中删除对应记录,修改一个Entity Bean时,容器会自动将Entity Bean的状态和数据库同步。
Spring 的两大核心机制
-
IoC (Inversion of Control,控制反转)
-
AOP(Aspect Oriented Programming,面向切面编程)。
MVC:Struts2、SpringMVC
ORM:MyBatis、Hibernate、Spring Data
Spring 的优势
-
低侵入 / 低耦合 (降低组件之间的耦合度,实现软件各层之间的解耦)
-
声明式事务管理(基于切面和惯例)
-
方便集成其他框架(如MyBatis、Hibernate)
-
降低 Java 开发难度
-
Spring 框架中包括了 J2EE 三层的每一层的解决方案(一站式)
Spring 能帮我们做什么
-
Spring 能帮我们根据配置文件创建及组装对象之间的依赖关系。
-
Spring 面向切面编程能帮助我们无耦合的实现日志记录,性能统计,安全控制。
-
Spring 能非常简单的帮我们管理数据库事务。
-
Spring 还提供了与第三方数据访问框架(如Hibernate、JPA)无缝集成,而且自己也提供了一套JDBC访问模板来方便数据库访问。
-
Spring 还提供与第三方Web(如Struts1/2、JSF)框架无缝集成,而且自己也提供了一套Spring MVC框架,来方便web层搭建。
-
Spring 能方便的与Java EE(如Java Mail、任务调度)整合,与更多技术整合(比如缓存框架)
Spring 的框架结构
核心容器(Spring core)
-
核心容器提供Spring框架的基本功能。
-
Spring以bean的方式组织和管理Java应用中的各个组件及其关系。
-
Spring使用BeanFactory来产生和管理Bean,它是工厂模式的实现。
-
BeanFactory使用控制反转(IoC)模式将应用的配置和依赖性规范与实际的应用程序代码分开。
-
BeanFactory使用依赖注入的方式提供给组件依赖。
Spring上下文(Spring context)
Spring上下文是一个配置文件,向Spring框架提供上下文信息。Spring上下文包括企业服务,如JNDI、EJB、电子邮件、国际化、校验和调度功能。
Spring面向切面编程(Spring AOP)
-
通过配置管理特性,Spring AOP 模块直接将面向方面的编程功能集成到了 Spring框架中。
-
所以,可以很容易地使Spring框架管理的任何对象支持 AOP。Spring AOP 模块为基于 Spring 的应用程序中的对象提供了事务管理服务。
-
通过使用 Spring AOP,不用依赖 EJB 组件,就可以将声明性事务管理集成到应用程序中。
Spring DAO模块
-
DAO模式主要目的是将持久层相关问题与一般的的业务规则和工作流隔离开来。
-
Spring 中的DAO提供一致的方式访问数据库,不管采用何种持久化技术,Spring都提供一直的编程模型。
-
Spring还对不同的持久层技术提供一致的DAO方式的异常层次结构。
Spring ORM模块
-
Spring 与所有的主要的ORM映射框架都集成的很好,包括Hibernate、JDO实现、TopLink和IBatis SQL Map等。
-
Spring为所有的这些框架提供了模板之类的辅助类,达成了一致的编程风格。
Spring Web模块
-
Web上下文模块建立在应用程序上下文模块之上,为基于Web的应用程序提供了上下文。
-
Web层使用Web层框架,可选的,可以是Spring自己的MVC框架,或者提供的Web框架,如Struts、Webwork、tapestry和jsf。
Spring MVC框架(Spring WebMVC)
-
MVC框架是一个全功能的构建Web应用程序的MVC实现。
-
通过策略接口,MVC框架变成为高度可配置的。
-
Spring的MVC框架提供清晰的角色划分:控制器、验证器、命令对象、表单对象和模型对象、分发器、处理器映射和视图解析器。
-
Spring支持多种视图技术。