热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Spring是如何简化java开发的

Spring是如何简化java开发的Spring最根本的使命就是为了简化java开发。为了降低java开发的复杂性,Spring采取了以下的4中策略:基于POJO的轻量性和最小侵入

Spring是如何简化java开发的

Spring最根本的使命就是为了简化java开发。为了降低java开发的复杂性,Spring采取了以下的4中策略:

  1. 基于POJO的轻量性和最小侵入性编程

  2. 通过依赖注入和面向接口实现松耦合

  3. 基于切面和惯例进行声明式编程

  4. 通过切面和模板减少样板式代码

POJO的轻量性和最小侵入性编程体现在哪里?

POJO类就是一个类,包含了一堆属性,还有get、set方法。Spring想要的就是这样简单。你为了使用Spring,不需要修改原有的POJO类。不需要像EJB那样,继承一些必须要继承和实现的方法。其实,这就是框架对你代码的侵入。造成的结果就是,你的代码与框架紧紧地耦合在一起。那到底是谁服务谁呢?(框架服务你还是你服务框架)

Spring竭力避免因自身的API而弄乱你的代码。Spring不会强迫你实现Spring规范的借口或继承Spring规范的类。最坏的情况是,你的代码中加有Spring的注解。

依赖注入

依赖注入就是为了解耦。耦合具有两面性:一方面,紧密耦合的代码难以测试,难以复用,难以理解。另一方面耦合又是必须的,完全的耦合那就根本成不了一个系统。
对于依赖注入是怎么解耦的,可以这样比喻。以前你的代码里需要一把斧子,那你就new出一把斧子(注意:这里已经发生耦合)。现在有了依赖注入,你需要斧子的时候,Spring就会提供给你,相当于有一个斧子工厂一样。

应用切面

AOP允许你把遍布应用各处的功能分离出来形成可重用的组件。这些功能包括日志、安全检查、事务管理等。就拿日志来说,如果不适用AOP,你可能把日志功能分散的写到各个业务逻辑类中(一改全都需要改),或者把日志功能抽象成一个公共的类。但系统中还是存在很多一样的方法调用。这个时候如果使用AOP就可以做到最小的侵入性。

public class LogUtil{
public void doItBefore(){
System.out.println("do it before");
}
public void doItAfter(){
System.out.println("do it after");
}
}
public class Business{
private LogUtil log;
public Business(LogUtil log){
this.log = log;
}
public void do(){
//日志
log.doItBefore();
//业务逻辑---开始
System.out.println("do it");
//业务逻辑---结束
//日志
log.doItAfter();
}
}

业务类Business需要知道日志类LogUtil的存在吗?使用AOP,在Spring的配置文件中进行配置就可以了,Business类不需要做任何的改变。

使用模板消除样式代码

最常见的模板代码就是jdbc的那些代码,开头和结尾基本上都相同,但与业务逻辑毫不相关,还不能不写。使用模板就是可以消除这些样式代码,使精力集中在业务逻辑的处理上。


推荐阅读
  • 在使用SSH框架进行项目开发时,经常会遇到一些常见的问题。例如,在Spring配置文件中配置AOP事务声明后,进行单元测试时可能会出现“No Hibernate Session bound to thread”的错误。本文将详细探讨这一问题的原因,并提供有效的解决方案,帮助开发者顺利解决此类问题。 ... [详细]
  • Hadoop的文件操作位于包org.apache.hadoop.fs里面,能够进行新建、删除、修改等操作。比较重要的几个类:(1)Configurati ... [详细]
  • 本文将带你快速了解 SpringMVC 框架的基本使用方法,通过实现一个简单的 Controller 并在浏览器中访问,展示 SpringMVC 的强大与简便。 ... [详细]
  • 在多线程并发环境中,普通变量的操作往往是线程不安全的。本文通过一个简单的例子,展示了如何使用 AtomicInteger 类及其核心的 CAS 无锁算法来保证线程安全。 ... [详细]
  • 在JavaWeb开发中,文件上传是一个常见的需求。无论是通过表单还是其他方式上传文件,都必须使用POST请求。前端部分通常采用HTML表单来实现文件选择和提交功能。后端则利用Apache Commons FileUpload库来处理上传的文件,该库提供了强大的文件解析和存储能力,能够高效地处理各种文件类型。此外,为了提高系统的安全性和稳定性,还需要对上传文件的大小、格式等进行严格的校验和限制。 ... [详细]
  • 在Java Web服务开发中,Apache CXF 和 Axis2 是两个广泛使用的框架。CXF 由于其与 Spring 框架的无缝集成能力,以及更简便的部署方式,成为了许多开发者的首选。本文将详细介绍如何使用 CXF 框架进行 Web 服务的开发,包括环境搭建、服务发布和客户端调用等关键步骤,为开发者提供一个全面的实践指南。 ... [详细]
  • Spring框架的核心组件与架构解析 ... [详细]
  • 零拷贝技术是提高I/O性能的重要手段,常用于Java NIO、Netty、Kafka等框架中。本文将详细解析零拷贝技术的原理及其应用。 ... [详细]
  • 本文总结了一些开发中常见的问题及其解决方案,包括特性过滤器的使用、NuGet程序集版本冲突、线程存储、溢出检查、ThreadPool的最大线程数设置、Redis使用中的问题以及Task.Result和Task.GetAwaiter().GetResult()的区别。 ... [详细]
  • 开发日志:高效图片压缩与上传技术解析 ... [详细]
  • 在《Cocos2d-x学习笔记:基础概念解析与内存管理机制深入探讨》中,详细介绍了Cocos2d-x的基础概念,并深入分析了其内存管理机制。特别是针对Boost库引入的智能指针管理方法进行了详细的讲解,例如在处理鱼的运动过程中,可以通过编写自定义函数来动态计算角度变化,利用CallFunc回调机制实现高效的游戏逻辑控制。此外,文章还探讨了如何通过智能指针优化资源管理和避免内存泄漏,为开发者提供了实用的编程技巧和最佳实践。 ... [详细]
  • 深入解析Struts、Spring与Hibernate三大框架的面试要点与技巧 ... [详细]
  • 本文介绍了如何利用Shell脚本高效地部署MHA(MySQL High Availability)高可用集群。通过详细的脚本编写和配置示例,展示了自动化部署过程中的关键步骤和注意事项。该方法不仅简化了集群的部署流程,还提高了系统的稳定性和可用性。 ... [详细]
  • Python多线程编程技巧与实战应用详解 ... [详细]
  • ButterKnife 是一款用于 Android 开发的注解库,主要用于简化视图和事件绑定。本文详细介绍了 ButterKnife 的基础用法,包括如何通过注解实现字段和方法的绑定,以及在实际项目中的应用示例。此外,文章还提到了截至 2016 年 4 月 29 日,ButterKnife 的最新版本为 8.0.1,为开发者提供了最新的功能和性能优化。 ... [详细]
author-avatar
May蕊心
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有