跳至主要內容

简介

wangdx大约 9 分钟

Java 与 WEB 开发

WEB 设计与开发

WEB 是现在很多项目应用主要的展现形式,基于 HTTP 协议编写的 WEB 项目不仅适合于维护同时也适合于不同技术平台的业务对接。Java 作为一门老牌的编程语言,不仅可以提供高效的应用性能,同时也有着强大技术生态圈的支持,所以成为了大型项目开发中的首选技术平台,也是国内很多互联网大厂使用最多的技术。

WEB 开发

随着技术的发展,WEB 项目开发也已然发生了翻天覆地的变化,有的项目采用了单 WEB 应用的形式,将页面显示与业务逻辑处理放在了一个 WEB 服务器之中,这样浏览器只需要按照传统的方式发送 HTTP 请求,后通过浏览器执行引擎进行 HTML 页面展示即可,即便现在的开发中存在有移动端设备,只要是基于 HTML5 编写的 WEB 页面也是可以自动实现页面适配显示的。

前后端分离架构

如果现在开发者认为将动态 WEB 程序与静态 WEB 程序保存在一起会造成代码维护的困难,则也可以基于前后端分离的设计结构,由后端 WEB 服务开放指定的服务接口,而后前端开发人员基于接口的描述实现数据的获取,并利用 MVVM 开发框架进行接口数据的接收与页面展示,由于此时的页面显示是一个单独的服务器,这样可以提高项目的处理性能,增加项目应用的灵活性。

基于 Java 实现的 WEB 开发

WEB 应用已经有了几十年的发展历史,而随着硬件技术与网络传输性能的逐步提升 WEB 的开发技术也在不断的更新,由早期的静态 WEB 发展到了当今的动态 WEB,而实现动态 WEB 开发的技术也很多,例如:PHP、Python、Java、.NET、GoLang、RubyNode.Js 等,考虑到国内的应用环境、语言生态圈以及性能等因素,大型项目一般都会以 Java 语言作为首选,Java 在实现动态 WEB 处理时,可以依靠其稳定的运行支持、完善的代码结构、高效的 IO 处理、良好的硬件资源控制等技术特点构建完善的应用服务

JavaEE 标准架构

JavaEE 容器与运行机制

Java 的开发并不仅仅是一个简单的 JSP 与 Servet,实际上还包含有大量的系统服务,例如:JDBC 数据库编程就属于一种服务,Java 在早期推广时制定了一系列的开发标准而后不同的厂商根据自身的需要进行该标准的实现。这样的设计不仅创造了良好的软件生态系统,同时也便于开发人员进行代码编写的实现。

JavaEE 容器划分

所有的 JavaEE 的项目开发必须围绕着容器展开,容器提供了所有程序代码的运行空间还可以使用 JavaEE 中的各种服务(例如:JMS 消息服务组件、JDBC 数据库服务)进行项目的调用,同时容器还可以帮助开发者管理 JM 内存空间、CPU 资源调度、线程池分配,或者生成大量的程序代码,以减少用户代码的开发难度。为了进一步明确 JavaEE 的功能结构划分,JavaEE 将容器的标准分为 WEB 容器与 EJB 容器两类

Spring 简介

面向框架的设计开发

在实际的项目开发之中,为了有效的控制项目的成本,往往会选择大量的开源服务组件(例如:Tomcat 应用组件)实现项目的开发与部署,这样一来很多的 Java 项目就只能够运行在 WEB 容器之中。而相比较 EJB 容器的代码自动化机制,WEB 容器的功能就变得非常的有限,从而导致开发人员会编写很多重复的代码,这样不仅影响了开发效率,同时也为项目的维护埋下了较多的隐患。所以一些有经验的开发团队,会尝试在 WEB 容器之中模拟 EJB 容器的使用,通过自定义的开发框架来解决资源调度、线程管理、对象维护等相关操作,而后开发者基于该框架进行代码的编写

Spring

Spring 是一个面向对象设计层面的开发框架,其本身提供有一个完善的设计容器,利用此容器可以帮助开发者实现对象的管理、线程同步处理、依赖关系的配置,该框架是由 Pivotal 公司提供的,并且由 Rod Johnson 主持设计开发的,如果要想获取 Spring 开发框架的相关信息可以登录“spring.io”

Spring 核心技术

Spring 开发框架核心的设计理念为“使用最本质的技术进行开发所有的开发者不应该关注于代码底层的细节处理(例如:对象管理、线程分配等)而只应该完成代码的核心功能,而为了实现这目标,在 Spring 开发框架之中提供了两项核心技术:

  • loC(Inversion ofControl、控制反转):实例化对象控制,可以利用依赖注入(DependencyInjection)与依赖查找(DependencyLookup)实现类对象之间的引用配置;
  • AOP(Aspect Oriented Programming、面向切面编程):利用切面表达式进行代码的织入处理实现代理设计,

Spring 设计架构

Spring 的主要目的是帮助用户简化开发流程以提高代码生产效率,利用合理的配置文件来实现程序的控制,同时为了方便开发者编写又提供有方便的事务处理能力、第三方框架整合能力

核心容器

  • Beans 模块:提供框架的基础部分,主要实现的控制反转(依赖注入)功能。其中 Bean Factory 是容器核心部分,其核心本质是“工厂设计模式”实现,提倡面向接口编程,对象间的关系由框架通过配置关系进行管理,所有的依赖都由 Bean Factory 来维护
  • Core 模块:封装了框架依赖的最底层部分,包括资源访问、类型转换和其它的常用工具类;
  • Context 模块:以 Core 和 Bean 模块为基础,集成 Beans 模块功能并添加资源绑定、数据验证、国际化、Java EE 支持、容器生命周期等,核心接口是 ApplicationContext;
  • Expression Language(EL)模块:表达式语言支持,支持访问和修改属性值、方法调用、支持访问及修改数组、容器和索引器、命名变量、支持算术和逻辑运算、支持从 e 宽器获毁 Be27;也立持列表透明、选择和一般的列表聚合等,利用表达式语言

切面编程模块

  • AOP(Aspect Oriented Programming)模块:符合 AOP Alliance 规范的面向切面提供了如日志记录、权限控制、编程实现,我性能统计等通用功能和业务逻辑分离技术并且能动态的把这些功能添加到需要的代码中,这样可以降低业务逻辑和通用模块的耦合;
  • Aspects 模块:提供了 Aspect 的集成,利用 Aspect 表达式可以更加方便的实现切面管理;
  • Instrumentation 模块:是 Java5 提供的新特性:使用 Instrumentation,开发者可以构建一个代理,用来监测运行在 JVM 上的程序。监测一般是通过在执行某个类文件之前,对该类文件的字节码进行适当修改进行的。

数据访问/集成模块

  • 事务管理模块:该模块用于 Spring 事务管理操作,只要是 Spring 管理的对象都可以利用此事务模块进行控制,支持编程和声明式两类方式的事务管理:
  • JDBC 模块:提供了一个 JDBC 的操作模板,利用这些模板可以消除传统冗长的 JDBC 编码还有必须的事务控制,同时可以使用 Spring 事务管理,无需额外控制事务;
  • ORM 模块:提供实体层框架的无缝集成,包括 Hibernate、JPA、MyBatis 等,同时可以使用 Spring 实现事务管理,无需额外控制事务;
  • OXM 模块:提供有一个“Object/XML”映射实现,可以将 Java 对象映射成 XML 数据或者将 XML 数据映射成 Java 对象,Object/XML 映射实现包括 JAXB、Castor、XMLBeans 和 XStream。
  • JMS 模块:用于 JMS(Java Messaging Service)组件整合,提供一套消息“生产者-消费者”处理模型,JMS 可以用于在两个应用程序之间,或分布式系统中实现消息处理与异步通信。

Web/Remoting 模块

  • Web 模块:提供了基础 WEB 功能。例如:多文件上传、集成 I0C 容器、远程过程访问(RMl、Hessian、Burlap)以及 Web Service 支持,并提供有 RestTemplate 类来提供方便的 Restful Services 访问。
  • Servlet 模块:提供了一个 Spring MVC WEB 框架实现。Spring MVC 框架提供了基于注解的请求资源注入、可以更简单的进行数据绑定、数据验证和一套非常易用的 JSP 标签,完全无缝的与 Spring 其它技术协作;
  • MVC 框架模块:提供了与常用 MVC 开发框架的整合,例如:Struts、WebWork、JSF 等;
  • WebFlux 模块:提供了异步编程的模型实现,提高了项目的处理性能

Test 模块

支持 JUNIT 和 Test 测试框架,而且还额外提供了一些基于 Spring 的测试功能,比如在测试 Web 框架时模拟 HTTP 请求功能,或者启动容器实现依赖注入管理。

demo


上次编辑于: