Spring框架四大基本原则

一、使用POJO进行轻量级和最小侵入式开发。

1. 什么是POJO

按照Martin Fowler的解释是“Plain Old Java Object”,从字面上翻译为“纯洁老式的java对象”,但大家都使用“简单java对象”来称呼它。 POJO的内在含义是指那些没有从任何类继承、也没有实现任何接口,更没有被其它框架侵入的java对象。 POCO的概念是从java的POJO借用而来,而两者的含义是一致的,不同的仅仅是使用的语言不一样。所以POCO的解释就是“Plain Old C# Object”。

2. 为什么会有POJO?

主要是Java的开发者被EJB的繁杂搞怕了,大家经过反思,又回归“纯洁老式”的JavaBean,即有无参构造函数,每个字段都有getter和setter的java类。

3. POJO的意义

POJO让开发者可专注于业务逻辑和脱离框架的单元测试。除此之外, 由于POJO并不须要继承框架的类或实现其接口,开发者能够极其灵活地搭建继承结构和建造应用。 POJO的意义就在于它的简单而灵活性,因为它的简单和灵活,使得POJO能够任意扩展,从而胜任多个场合,也就让一个模型贯穿多个层成为现实。 先写一个核心POJO,然后实现业务逻辑接口和持久化接口,就成了Domain Model; UI需要使用时,就实现数据绑定接口,变成VO(View Object)。

4. POJO与PO、VO的区别 POJO是指简单java对象(Plain Old Java Objects、pure old java object 或者 plain ordinary java object)。Java初高级一起学习分享,喜欢的话可以我的学习群64弍46衣3凌9,或加资料群69似64陆0吧3

 PO是指持久对象(persistant object持久对象)。 VO是指值对象或者View对象(Value Object、View Object)。注意,本文的VO特指View Object。 持久对象实际上必须对应数据库中的entity,所以和POJO有所区别。比如说POJO是由new创建,由GC回收。但是持久对象是insert数据库创建,由数据库delete删除的。基本上持久对象生命周期和数据库密切相关。另外持久对象往往只能存在一个数据库Connection之中,Connnection关闭以后,持久对象就不存在了,而POJO只要不被GC回收,总是存在的。 由于存在诸多差别,因此持久对象PO(Persistent Object)在代码上肯定和POJO不同,起码PO相对于POJO会增加一些用来管理数据库entity状态的属性和方法。而ORM追求的目标就是要PO在使用上尽量和POJO一致,对于程序员来说,他们可以把PO当做POJO来用,而感觉不到PO的存在。

5. POJO的扩展 POJO仅包含最简单的字段属性,没有多余的东西,它本质上就是一个普通的JavaBean。 但是在POJO的基础上,能够扩展出不同的对象。 l 为POJO增加了持久化的方法(Insert、Update、Delete……)之后,POJO就变成了PO。 l 为POJO增加了数据绑定功能之后,POJO就变成了View Object,即UI Model。 l 为POJO增加业务逻辑的方法(比如单据审核、转帐……)之后,POJO就变成了Domain Model。 l POJO还可以当作DTO使用。

6. 侵入式开发与非侵入式开发的区别

假设大家都想要把用户代码塞到一个框架里。侵入式的做法就是要求用户代码“知道”框架的代码,表现为用户代码需要继承框架提供的类。非侵入式则不需要用户代码引入框架代码的信息,从类的编写者角度来看,察觉不到框架的存在。 例如: 使用struts的时候,我需要继承一些struts的类,这时struts侵入到了我的代码里。 使用spring,编写一些业务类的时候不需要继承spring特定的类,通过配置完成依赖注入后就可以使用,此时,spring就没有侵入到我业务类的代码里。 侵入式让用户代码产生对框架的依赖,这些代码不能在框架外使用,不利于代码的复用。但侵入式可以使用户跟框架更好的结合,更容易更充分的利用框架提供的功能。 非侵入式的代码则没有过多的依赖,可以很方便的迁移到其他地方。但是与用户代码互动的方式可能就比较复杂。 这两种方式都有各自的优缺点吧,主要看实际开发时怎么权衡了。

二、通过依赖注入和基于接口编程实现松耦合。

三、通过AOP和默认习惯进行声明式编程。

 四、使用AOP和模板(template)减少模式化代码

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Java分层概念(转) 原文地址(也不属于原文吧,这也是别人转载的不知道原作者是谁,如有侵权,请联系,以删除):h...
    小小世界R阅读 1,734评论 0 0
  • java的(PO,VO,TO,BO,DAO,POJO)解释 O/R Mapping 是 Object Relati...
    逆风飞行1226阅读 2,378评论 0 7
  • 一个项目中说系统分为表现层、控制层、逻辑层、DAO层和最终数据库五层架构 表现层就是看到的东西,比如你现在看到的当...
    ZZS_简阅读 1,429评论 0 1
  • “喜欢三五成群,或是孤独成瘾,没什么优劣,自在就好。热衷于野心勃勃或是岁月静好,没什么大碍,丰富就好。留在大城市或...
    韩范女主阅读 430评论 2 3
  • 猪小姐说:我可能再也不相信爱情 ,再也不期待爱情了。 猪小姐有这样两段刻骨铭心的恋爱: 第一段, 猪小姐读大...
    行走的斑馬阅读 687评论 0 1

友情链接更多精彩内容