论公司spring的滥用
这个公司每个项目用不同的一套开发框架,实在忍不住拿一个出来说说事。
我简单说一下,Web是前段、EnglishWeb是英文版、Trip是后台、Common是通用类、Console没用(估计拿来测试的)、Model就是模型了,Business他把业务逻辑、数据处理等等这些放在这里。
重点就说Business,这个框架是用spring.net来支撑每一个层之间的联系,而不是我们通常的new一个实例.. 这是我个人觉得最奇葩、最无聊的设计。
里面是一坨
我解释一下他们平时是怎么开发的,首先DAL做数据处理,然后写接口放在Service下,继承接口实现业务逻辑放在Impl中,前端用spring的方式创建Impl来使用业务逻辑层,而Impl中的所有实例化都是这样的。
去spring中配置让它来实例化。先发出我的疑问,
疑问1:为什么每个前端使用业务逻辑层全要用spring来创建?这完全没有必要,为何要用spring,注入一个业务逻辑类到页面后台里有任何意义?难不成一个页面能用两套业务逻辑吗。而且是每个都如此!
疑问2:Impl是被他们直接当业务逻辑层来使用,BLL层已经失去任何意义了,而且他们这样声明DAL的方式完全就是脱了裤子放屁,连接口都没有的情况下,用spring来创建又有何意义?就算有接口,这里注入的意义何在?
还有很多怀疑的地方,都是用spring导致的..就不一一举例了,都差不多一个意思。
这个项目让我感觉就是为了用spring而spring,而且分不清分层的意义。
个人观点
1、DAL 数据处理层,与数据库直接交互的地方,不应该包含任何业务相关的东西。
2、BLL 业务逻辑层,很多人使用都是按表、或则按页面来创建这个层的类,我认为不是这样的,这里应该是梳理好项目中的对象,比如说一个机票系统,机票是一个对象,他可能由很多附属表才能组成机票的整个业务,可是我们只需要一个类,他有很多不同的操作。BLL更像是DAL类的组装厂,而不是1:1。梳理成对象的好处在于,用到机票相关的业务都在这里,不会让同一个逻辑东一个西一个,你写一个他写一个。这也是面向对象编程的意义,如果按表、按页面来创建这一层,那完全是在过程式的编程中没有跳出来。
3、页面后台,这里只是获取页面数据、验证数据的地方,不要有太多的业务逻辑了。
什么时候用spring?
比如机票我们要算反点了,要用很长一段时间后会换回来,那么这个业务逻辑就有两套,这时用spring来注入是很好的选择。
后话:欢迎来喷,探讨才有进步。个人不喜欢教学的东西,讨论才有火花、才有激情,有理有据即可。
论公司spring的滥用的更多相关文章
- 记录分享公司Spring data相关配置
起因 公司Spring Data相关的配置还是有点意思的,不过蛮复杂的...XML很多...我不太喜欢强行记住....所以我打算记录一下配置的大致思路和结构,以后可能会有用.... 总体结构 总体结构 ...
- 什么时候用spring
论公司spring的滥用 这个公司每个项目用不同的一套开发框架,实在忍不住拿一个出来说说事.
- hbase+hadoop+hdfs集群搭建 集成spring
序言 最近公司一个汽车项目想用hbase做存储,然后就有了这篇文字,来,来,来, 带你一起征服hbase,并推荐一本书<hbase权威指南> 这是一本极好的hbase入门书籍,我花了一个晚 ...
- 如何高效地把Spring boot学到能干活的程度
Spring boot要学什么?要学到什么程度?以及相关的学习方法是什么?这些很难量化,但极好形容:需要学到能帮你找到一份工作的程度. 任何脱离工作脱离实际的学习,都是没有意义的.比如程序员运行通 ...
- 使用@import导入实现了ImportBeanDefinitionRegistrar接口的类,不能被注册为bean
今天在调试公司spring项目的时候发现了这样一个问题,由于我们的项目使用的是springboot就以springboot为例,代码如下: @Import({DataSourceRegister.cl ...
- Spring原来属于这家公司
Spring几年前被VMware公司收购,如今Spring版权隶属于Pivotal.Pivotal ONE对Spring提供整合.Greenplum提供了大数据服务,GEMFIRE内存集群技术帮助12 ...
- Spring Cloud在国内中小型公司能用起来吗?
今天吃完饭休息的时候瞎逛知乎,突然看到这个一个问题Spring Cloud在国内中小型公司能用起来吗?,吸引了我的注意.仔细的看了题主的问题,发现这是一个好问题,题主经过了一番思考,并且用图形全面的将 ...
- 浅谈现公司的Spring Cloud微服务框架
目录 说在前面 服务注册与发现 服务网关及熔断 配置中心 消息中心.服务链路追踪 小言 说在前面 本文偏小白,大佬慎入,若有错误或者质疑,欢迎留言提问,谢谢,祝大家新年快乐. spring cloud ...
- Spring Cloud在国内中小型公司用的起来吗?
转自:http://www.cnblogs.com/ityouknow/p/7508306.html 今天吃完饭休息的时候瞎逛知乎,突然看到这个一个问题Spring Cloud在国内中小型公司能用起来 ...
随机推荐
- printf与++的puzzle
int b = 0; int c = 0; int main(int argc, const char *argv[]) { printf("%d %d %d %d %d",b,b ...
- http协议报头信息和主体鉴别
http协议报头信息和主体是使用一个空行分开.这是什么空行?简单的说,那是,\r\n\r\n. 所以会server数据的回归\r\n\r\n结果分离,一个是标题信息.它是一个消息的文本. C#例如,下 ...
- 创建GitHub技术博客
创建GitHub技术博客全攻略 githubio技术博客网站生成 说明: 首先,你需要注册一个 github 账号,最好取一个有意义的名字,比如姓名全拼,昵称全拼,如果被占用,可以加上有意义的数字.本 ...
- IOS开发中怎样验证邮箱的合法性
IOS开发中怎样验证邮箱的合法性 文章参考:http://www.codes51.com/article/detail_94157.html 代码: - (void)viewDidLoad { [su ...
- jQuery验证插件
原文:jQuery验证插件 学习要点: 1.使用 validate.js 插件 2.默认验证规则 3.validate()方法和选项 4.validate.js 其他功能 验证插件(validate. ...
- 探秘IntelliJ IDEA v13的应用服务器
原文:探秘IntelliJ IDEA v13的应用服务器 IntelliJ IDEA v13应用out-of-the-box支持众多企业级和开源的服务器,包括:GlassFish.WebLogic. ...
- MUI初始化滚动区域
mui(".mui-scroll-wrapper").scroll().refresh(); 如果不是MUI对象,需要转一下才可 mui($("#areaDiv" ...
- js预解析问题总结
//示例 1 alert(a) // undefind. alert(fn) // function 整个函数块. var a = 1; function fn(){ return falss; }; ...
- 区域、模板页与WebAPI初步
区域.模板页与WebAPI初步 一.区域—麻雀虽小,五脏俱全的迷你MVC项目 1.1 Area的兴起 为了方便大规模网站中的管理大量文件,在ASP.NET MVC 2.0版本中引入了一个新概念—区域( ...
- Js Date泣血整理
原文:Js Date泣血整理 JS Date 对象用于处理日期和时间. 创建 Date 对象的语法: var myDate=new Date() Date 对象会自动把当前日期和时间保存为其初始值. ...