`

论spring的非侵入性

阅读更多
过去写了篇日志
旧系统集成spring
http://japi.iteye.com/blog/257215

想了,spring的非侵入性。

现在系统已经是SSH的了,从SH到SSH就是一个新的开发。

那么什么才是真正的非侵入性呢?
原来的想法就是在加入spring的时候,原系统不需要任何的改变。

但经过系统的改造,发现与心中的想法,差距不是一点点。

到底什么是非侵入性??


看到以前的一个帖子
http://www.iteye.com/topic/38779?page=1

引用
主要是看能不能方便的进行单元测试,高侵入性的框架下面写的代码单元测试起来很困难。例如对比Struts和Webwork就可以知道



引用
我的理解是所谓的‘非侵入’性应该是指代码中对框架的代码的调用多少和依赖程度,像struts和hibernate这样的框架是肯定需要你依赖于它的。因为你的action不得不继承基类action,你不得不调用hibernate的session对象。而像spring这样的框架本身就是为了减少这样的依赖性而实现的‘框架’,它达到这个目的采用的方式正好就是ioc。这也正是spring这个框架区别于其他框架的地方。

        要想做到绝对不依赖于任何的框架是不可能的,除非你什么都去自己’制造‘。而spring框架集成了其他很多的框架,比如hibenrate,struts什么的。它这样做的目的也无非是:要么你不依赖于他们,如果你实在要依赖于他们的话,就让我来依赖他们吧,而你们只需要依赖于我。正所谓’我不入地狱,谁入地狱‘,对于其他框架的繁琐的操作接口和一些版本的冲突spring都试着自己来解决或作出一些‘封装’,来简化我们对其操作的复杂性。

        个人觉得spring的这种设计方式还是非常先进的,只是其自身正在因为这种方式而变得越来越臃肿和庞大。变得不堪重负,因为我们在开发中经常因为不了解其对于其他的框架的集成方式而不知如何解决一些具体的问题。虽然我不依赖于他们了,但是因为中间多了一个你(spring)而让本来简单的事情变得更加的扑朔迷离!!

       个人认为这正是spring在发展过程中需要注意平衡’强大性‘和’简单性‘这二者的挑战极大的地方。因为一不小心它可能就发展成为了一个新的’开发平台‘,而所谓的’非侵入行‘和’简单性‘就又变成了一句空话!!!


看来
非侵入性只是一个去追求的目标,尽量减少代码对框架代码的依赖。
分享到:
评论

相关推荐

    Spring 2.5 Aspect-Oriented Programming

    - **声明式事务管理**:Spring的AOP支持使得事务管理变得简单易用,开发者可以通过简单的配置而不是侵入式的代码来控制事务边界。 - **增强代码可读性和可维护性**:通过将横切关注点从业务逻辑中分离出来,Spring...

    springcloud链路追踪.docx

    Sleuth 支持异步数据收集,确保消息队列中的调用也能被追踪,并且尽量减少对应用的侵入性。 2. 数据存储:追踪数据可以存储在各种存储系统中,如内存、MySQL、Cassandra 或 Elasticsearch。Zipkin 提供了多种存储...

    论文研究 - 互动

    (MV)单独进行测试,并与市售的草甘膦[N-(膦酰基甲基)甘氨酸](GLY)产品结合使用,以控制侵入性葡萄藤,红葡萄[Brunnichia ovata(Walt。)Shinners]和小号爬山虎[Campsis radicans( L.)似乎。 前局]在密西根...

    基于SSM实现的新生报到微信小程序+论文+答辩PPT

    此外,Spring还提供了AOP特性,允许开发者实现非侵入式的横切关注点,如日志、事务管理等。 2. SpringMVC:作为Spring的Web MVC框架,负责处理HTTP请求和响应,提供模型-视图-控制器的架构模式。开发者可以定义控制...

    基于Spring框架的Web系统的研究与应用* (2012年)

    综上所述,Spring框架凭借其轻量级、非侵入式等特点,在Web开发领域展现了极大的潜力。通过对Spring框架的研究与应用,不仅可以提升Web系统的开发效率,还能显著增强系统的可维护性和扩展性。随着Spring框架的不断...

    瞿佳松_2020101371026_论文_word_基于springboot的音乐播放器系统 .docx

    - **非功能性需求**:系统性能(如响应时间)、安全性、可用性等。 2. **系统架构设计**: - **后端架构**:使用Spring Boot搭建后端服务,集成MyBatis Plus进行数据库操作。 - **前端架构**:使用Vue.js构建...

    Green手机广告投放系统设计与实现参考.pdf

    用户需求主要关注广告的个性化、非侵入性和隐私保护;业务需求涉及广告的投放策略、计费模式和效果评估;技术需求则包括系统的稳定性、安全性以及高性能处理能力。后续章节可能涉及系统设计、实现、测试和性能评估,...

    OA权限管理系统的论文开题报告

    随着系统规模的扩大,如何确保合法用户能访问其应得的功能,防止非授权用户侵入,以及对特定流程实施身份验证,成为关键。B/S(Browser/Server)架构下的权限管理尤为重要,因为它依赖于公共的浏览器,需要一个强大...

    J2EE二手商品网上交易平台系统的设计与实现毕业论文.docx

    Spring是一个轻量级的、非侵入式的框架,提供了一个灵活的、可扩展的框架来开发企业级应用程序。Spring架构主要包括Bean容器、AOP、MVC等组件。 2.3.Hibernate架构 Hibernate是一个基于J2EE的ORM(Object-...

    基于Java的视频会议系统(程序+论文).rar

    9. **分布式系统设计**:对于大规模的视频会议系统,可能需要分布式架构来分担负载,这涉及到负载均衡、服务发现、容错恢复等高级概念,Java的微服务框架如Spring Boot和Spring Cloud可以帮助实现这些。 10. **论文...

    基于SSH的校园微博系统及毕业论文和答辩ppt

    Spring的IoC容器使得对象的创建和管理变得更加简单,而AOP则允许开发者编写非侵入式的跨切面代码,如日志、事务管理等。 3. **Hibernate**:Hibernate是一个持久化框架,主要负责数据库操作。它通过ORM(对象关系...

    个人网盘项目.rar

    它的主要特性有:无侵入,对MyBatis原生接口完全兼容;提供CRUD操作,支持主键自增、填充公共字段等功能;支持Lambda形式编写,使代码更加简洁;支持分页插件,简化分页代码。 三、自定义缓存层的设计与实现 缓存层...

    基于SSM和Java的校园点餐系统.pdf

    - 切面编程(AOP):在Spring框架中通过AOP实现切面日志的开发,能够对代码进行非侵入式的横切关注点编程,如日志记录、事务管理等。 - 模型-视图-控制器(MVC)架构:将应用程序分成三个核心组件,分别负责数据、...

    J2EE开发全程实录

    通过具体的代码示例,展示了如何在Spring框架中实现Advice,编写业务逻辑代码,并装配pointcut和advice,从而实现对业务逻辑的无侵入式增强。动态代理机制,如CGLib和JDKProxy,也被详细讨论,帮助读者理解如何在...

    藏经阁-微服务治理技术白皮书-379.pdf

    书中详细阐述了服务治理的演进历程,从无到有,从服务框架提供的SDK,到轻量级隔离容器Pandora,再到无侵入式的Java Agent以及Service Mesh,这些技术的发展反映了服务治理能力的不断提升,涵盖了开发、测试、线上...

    Apache ServiceComb Saga使用说明

    - **低侵入**:只需要少量的注解和编写补偿方法即可实现分布式事务功能。 - **部署简单**:支持 Docker 快速部署。 - **支持前向恢复与后向恢复**:能够重试失败的操作,也支持执行补偿操作。 - **易于扩展**:基于 ...

Global site tag (gtag.js) - Google Analytics