Spring框架入门分析

定位

轻量级的企业级 Java 应用程序开发框架,基础版本只有 2 MB 左右的大小。核心特性是可以用于开发任何 Java 应用程序,但是在 Java EE 平台上构建 web 应用程序是需要扩展的。 Spring 框架的目标是使 J2EE 开发变得更容易使用,通过启用基于 POJO 编程模型来促进良好的编程实践。

在这里插入图片描述

架构分析:Core Containe

 Core:IOC容器、依赖注入。

IOC容器:
Spring BeanFactory 容器(接口):最简单轻量级的容器,适用于硬件资源较小设备上;
Spring ApplicationContext 容器(接口):继承BeanFactory,它增加了企业所需要的功能,比如,从属性文件中解析文本信息和将事件传递给所指定的监听器。
IOC容器的作用:通过解析Metadata(XML/注释)来实例化Beans(在spring中一般是POJO类),并根据metadata进行依赖注入来配置Beans之间的依赖,IOC实例化Beans的方式是利用Java的反射与动态代理。同时IOC也管理Beans的生命周期。如此可以使对象的实例化完全由IOC控制,不用再客户端代码中 new Class()来实例化对象,实现了解耦。
在这里插入图片描述

依赖注入:
实现了Java优先使用联合复用,而不是继承的设计原则。目的同样是为了解耦。当A类需要使用B类中的方法,有两种方式,继承B类或持有B类的对象引用。那么首选持有B类的对象引用。持有B类的对象引用也有两种实现方式,直接在A类中 new B(),或在外部new B(),然后将B的对象引用传入A中,这便是将B的对象引用传入A便是依赖注入,在外部生成B便是控制反转。依赖注入有两种方式:构造函数注入,设置函数(setter)注入。

Context

Context模块:
建立在由core和 beans 模块的基础上建立起来的,它以一种类似于JNDI注册的方式访问对象。Context模块继承自Bean模块,并且添加了国际化(比如,使用资源束)、事件传播、资源加载和透明地创建上下文(比如,通过Servelet容器)等功能。Context模块也支持Java EE的功能,比如EJB、JMX和远程调用等。ApplicationContext接口是Context模块的焦点。spring-context-support提供了对第三方库集成到Spring上下文的支持,比如缓存(EhCache, Guava, JCache)、邮件(JavaMail)、调度(CommonJ, Quartz)、模板引擎(FreeMarker, JasperReports, Velocity)等。

Beans

beans 模块:
提供 BeanFactory,工厂模式的微妙实现,它移除了编码式单例的需要,并且可以把配置和依赖从实际编码逻辑中解耦,这里BeanFactory既是上面提到的IOC容器。
这一部分使用重点是了解Bean的依赖注入、作用域、生命周期、与后置处理,这些都是通过metadata的配合来实现的,所以要知道如何通过XML文件或注释进行配置,这也是Spring设计的核心了,通过配置也不是硬编码来创建应用程序。十分灵活,有利于拓展与维护。

架构分析:AOP

AOP:aspect oriented program (面向方面的编程)
可能大家都知道OOP,对AOP的描述是:面向方面的编程需要把程序逻辑分解成不同的部分称为所谓的关注点。跨一个应用程序的多个点的功能被称为横切关注点,这些横切关注点在概念上独立于应用程序的业务逻辑。有各种各样的常见的很好的方面的例子,如日志记录、审计、声明式事务、安全性和缓存等。描述的比较抽象,举个例子就是类A有一个方法-eat(),在吃饭前需要方法-washHand(),吃饭后需要方法-clean(),我们一般来讲可能直接将washHand()clean()这两个方法直接写到类A中,若是类A中还有其他方法在执行前后需要这两个方法怎么办?类B中也有方法在执行前后需要这两个方法怎么办?如果直接硬编码进去会使程序很臃肿,一旦有改动需要改很多地方,不利于维护,那么好的做法是将washHand()clean()独立到另一个类中,需要的时候直接引用调用即可,而在Spring中更加强大,由于IOC的存在,可将AOP直接在xml文件中配置,不用在程序中有任何编码即可在一个方法执行前后进行其他操作,如记录日志、进行前后置处理等。

架构分析:Data Acess

JDBC

Java Data Base Connectivity:
模块提供了JDBC抽象层,它消除了冗长的JDBC编码和对数据库供应商特定错误代码的解析。其有两个显而易见的好处,不用通过代码连接数据库,在xml文件中配置数据库地址、名称、账号、密码即可,不用担心连接的是什么数据库,也不需要担心不同的数据库抛出不同的异常需要区别对待。这些spring全帮你搞定。通过JdbcTemplate中的方法直接进行数据库CRUD。另一个好处就是在查询数据库时,通过一个RowMapping可直接将一行查询结果转化成POJO类,十分方便。

ORM,OXM

Object Relational Mapping、Object XML Mapping:
这两个模块则是直接对数据库层进行抽象,区别是ORM是POJO类到数据库的映射,OXM是POJO类到xml文件的映射,与JDBC的区别是,JDBC仍需要SQL语句,而这两个连SQL语句都省了,直接将数据库抽象成面向对象。只需以面向对象编程的方式便可直接操作数据库内数据。举个例子:ORM中数据库表明对应类名,row对应该类的不同对象,字段名对,应类属性,若有一个表名为Persons 字段为name,age,那么在程序中直接 new Person(),便可通过setter(),getter(),find()等方法直接操作数据库里的数据。屏蔽数据库的种类。

Transaction

Transaction:
代表数据库事务,有四个特征:一致性、原子性、隔离性、持久性。

架构分析:WEB

WEB:
Spring的web模块采用MVC模式,即把model(数据),View(最终呈现给浏览器的html试图),control(业务逻辑控制,在Spring中根据请求生成配置Beans,返回一个视图名称)分离开来,实现解耦。采用REST的对外接口形式,从而实现跨平台与编程语言的调用。Spring中的MVC框架是围绕DispatcherServlet设计的,ispatcherServlet 用来处理所有的 HTTP 请求和响应。Spring Web MVC DispatcherServlet 的请求处理的工作流程如下图所示:
在这里插入图片描述HandlerMapping :收到一个 HTTP 请求后,DispatcherServlet 根据 HandlerMapping 来选择并且调用适当的控制器。
Controller:控制器接受请求,并基于使用的 GET 或 POST 方法来调用适当的 service 方法。Service 方法将设置基于定义的业务逻辑的模型数据,并返回视图名称到 DispatcherServlet 中。
ViewResolver :DispatcherServlet 会从 ViewResolver 获取帮助,为请求检取定义视图。
View:一旦确定视图,DispatcherServlet 将把模型数据传递给视图,最后呈现在浏览器中。
所有这些只需注释和在XML中配置即可,Spring会帮你完成其他操作。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值