`

对Spring的一些负面看法

阅读更多
Spring的宣传口号中有以下几点:
  1. 针对接口编程
  2. 通过XML配置业务类
  3. 避免不必要的Singleton
  4. DAO的封装
  5. 异常的处理
  6. AOP
  7. 一些额外功能的支持
整个Spring可以这样说,通过配置文件对业务进行配置。
 
当然有些口号确实帮助程序减轻了开发工作,也使得Web开发更加容易,但是并不是所有的口号都描述了事实。
我的看法列在下面,供大家参考:
 
配置文件有一定的灵活性,但是万事有利有弊,配置文件在带来灵活性的同时,也带来了很多弊端:
  1. 一般来说,配置文件是无法利用编译器的静态检查功能,只能通过大量单元测试来解决问题,也就是说它将许多可以静态编译器可以发现的错误,推迟到了单元测试甚至运行时才能发现。这样需要编写大量的单元测试,甚至部分是不需要的,无谓的增加开发量。即使进行一些简单修改,也需要完整的运行测试用例,增加了测试量。
  2. 有时候说XML配置可以随时修改,不需要重新启动服务,其实不见得,如果新增加了或者修改了类,不管有没有修改配置文件都需要重新启动服务(大部分的WEB Server可以支持热布署),从这方面来看,修改配置文件和修改代码没有质的区别。
  3. 利用IDE,如Eclipse很容易查看代码,包括继承,调用等,对代码也很容易管理,对于XML配置文件,随着模块的增加,不仅难以维护,而且难以查找。
  4. 如何重构,一般的IDE主要是支持代码级的重构,对XML重构的支持都不完善,XML的验证机制也很难保证XML文件的正确性。
  5. XML配置文件带来弱类型的使用,也就是说如果你要使用一个对象,必须进行强行转换,这样使用,对Java这种强类型的编译语言,其实不一定是一件好事,一般的设计中总要尽量避免强行转型的。
 


分享到:
评论

相关推荐

    关于spring boot中几种注入方法的一些个人看法

    下面我们将对 Spring Boot 中的几种注入方法进行详细的介绍和分析。 1. @Autowired @Autowired 是 Spring 中最常用的注入方法之一,它可以对类成员变量、方法及构造函数进行标注,完成自动装配的工作。@Autowired ...

    spring一些常用的jar包

    这个压缩包文件"spring一些常用的jar包"显然包含了用于构建和运行Spring应用的基础组件。以下是对这些关键jar包及其功能的详细解释: 1. **springsource**: 这个可能是指Spring的源代码库或者相关的工具,...

    spring2.0升级到spring3.0.5的开发包

    Spring 2.0是Spring框架的一个里程碑,它引入了AOP代理、JDBC抽象层、对JSF的支持以及对portlet的集成。然而,随着时间的推移,Spring 3.0.5带来了许多显著的改进和增强: 1. **泛型支持**:Spring 3.0引入了对Java...

    Spring Integration + Spring WS 整合

    Spring Integration + Spring WS 整合 在 Java 领域中,Spring Integration 和 Spring WS 是两个常用的框架,它们分别负责...这个项目对新手入门非常友好,因为它提供了一个简单的示例代码,使得开发者可以快速上手。

    spring 5 , Spring Boot 2.0,Spring cloud

    首先,Spring 5是Java开发者广泛使用的开源框架,它的主要改进包括对Java 8及更高版本的全面支持、反应式编程的支持(通过Spring Framework 5.0的WebFlux模块)、更好的类型安全的事件处理系统,以及对HTTP/2协议的...

    Spring Boot整合Spring Batch,实现批处理

    在Java开发领域,Spring Boot和Spring Batch的整合是构建高效批处理系统的一种常见方式。Spring Boot以其简洁的配置和快速的启动能力深受开发者喜爱,而Spring Batch作为Spring框架的一部分,专注于批量处理任务,...

    SpringTest_springtest_spring_java_Framework_

    "SpringTest_springtest_spring_java_Framework_"这个标题暗示了我们讨论的是关于Spring框架的测试方面,可能是使用Spring进行单元测试或集成测试的一些实践。 描述中的“简单小应用,实现了一些基本的功能”可能是...

    Spring技术内幕:深入解析Spring架构与设计原理

    《Spring技术内幕:深入解析Spring架构与设计原理(第2版)》从源代码的角度对Spring的内核和各个主要功能模块的架构、设计和实现原理进行了深入剖析。你不仅能从本书中参透Spring框架的出色架构和设计思想,还能从...

    Spring5.pdf

    Spring Cloud是基于Spring Boot的一系列工具集,旨在快速建立分布式系统中的一些常见模式(如配置管理、服务发现、断路器、智能路由、微代理、控制总线、一次性令牌、全局锁、领导选举、分布式会话和集群状态)。...

    spring类库 spring类库

    以下是对Spring框架及其核心组件的详细解释。 Spring框架的核心在于IoC(Inversion of Control,控制反转)和AOP(Aspect-Oriented Programming,面向切面编程)。IoC通过管理对象的生命周期和依赖关系,使得代码...

    spring v3.2源码

    spring3.2的源代码,至于为什么要下载spring3.2的源代码呢?...虽然每个版本之间有差别,由于我们想要研究的都是spring的一些基本的功能,关于baen解析,bean注入,aop啥的,这些基本的功能每个版本之间差别是非常小的。

    SpringBatch+Spring+Mybatis+MySql (spring batch 使用jar)

    Spring Batch是一个轻量级的,完全面向Spring的批处理框架,可以应用于企业级大量的数据处理系统。Spring Batch以POJO和大家熟知的Spring框架为基础,使开发者更容易的访问和利用企业级服务。Spring Batch可以提供...

    一些Spring的入门与进阶教程

    Spring框架是Java开发中不可或缺的一部分,它以其强大的依赖注入(DI)和面向切面编程(AOP)功能,以及对其他技术的广泛支持,成为企业级应用开发的首选。本教程集合了多个资源,旨在帮助初学者快速入门并进一步...

    Spring Cloud Gateway 整合 Spring Security 统一登录认证鉴权

    这通常涉及到`@PreAuthorize`和`@Secured`等注解的使用,以控制对特定路由的访问权限。 4. **处理登录和会话管理**:创建一个登录接口,用户可以通过这个接口提交凭证并获取JWT token。这个token将在后续的请求中...

    spring3.0.5 所有jar文件

    包含spring 3.0.5的所有jar文件: org.springframework.aop-3.0.5.RELEASE.jar org.springframework.asm-3.0.5.RELEASE.jar org.springframework.aspects-3.0.5.RELEASE.jar org.springframework.beans-3.0.5.RELEASE...

    spring 4.3.14(全)最新的spring4正式版

    7. **性能优化**:在4.3.14版本中,Spring团队对框架进行了大量性能优化,包括更快的启动时间、更少的内存消耗以及更高的并发处理能力。 8. **安全增强**:Spring Security是Spring生态中的重要组件,4.3.14版本...

    spring-web-5.2.3.RELEASE和spring-webmvc-5.2.3.RELEASE

    在5.2.3.RELEASE版本中,Spring框架引入了一些新的特性和改进。例如,性能优化、错误处理的增强、对Java 13的支持以及更好的反应式编程支持。这个版本可能还包括对旧版本中已知问题的修复,以提升稳定性和兼容性。 ...

    Spring-4.3源码

    在Spring 4.3版本中,我们看到了许多改进和优化,这些变化对理解Spring的工作原理至关重要。现在,我们将深入探讨Spring 4.3中的核心概念和技术细节。 首先,让我们关注依赖注入(DI)。这是Spring的核心特性之一,...

    spring源码注释中文

    6. **Test**:测试模块支持在开发过程中对 Spring 应用进行单元测试和集成测试,提供了模拟对象、测试上下文框架以及与各种测试框架的集成。 7. **Spring Boot**:近年来,Spring Boot 成为了快速开发 Spring 应用...

Global site tag (gtag.js) - Google Analytics