论公司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在国内中小型公司能用起来 ...
随机推荐
- MVC EF 修改 封装类 通用泛型方法(二)
修改 这个 方法 如下. 排除 null 值. /// <summary> /// 修改 多数 数据, 个别数据除外, proNames 不写 则是 修改全部 /// </summa ...
- 表现层及ASP.NET MVC介绍(二)
表现层及ASP.NET MVC介绍(二) 最近的更新速度越来越慢,主要是项目上比较忙,封装EasyUi也要花很多时间.不过大家请放心,本系列不会半途夭折,并且代码干货也会持续更新.本文继续介绍表现层和 ...
- Introducing Visual Studio’s Emulator for Android
visual studio 2015支持Android开发了. Microsoft released Visual Studio 2015 Preview this week and with it ...
- JS中Array数组的三大属性用法
原文:JS中Array数组的三大属性用法 Array数组主要有3大属性,它们分别是length属性.prototype属性和constructor属性. JS操作Array数组的方法及属性 本文总结了 ...
- struts2源代码分析(个人觉得非常经典)
读者如果曾经学习过Struts1.x或者有过Struts1.x的开发经验,那么千万不要想当然地以为这一章可以跳过.实际上Struts1.x与Struts2并无我们想象的血缘关系.虽然Struts2的开 ...
- Java-DES算法加密解密工具类
import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.InputStream; import ...
- Django查询的琐碎记录
我的需求是这样的,获取指定用户的获“赞”总数. 用户 models.py class UserProfile(models.Model): user = models.OneToOneField(Us ...
- Android 4.4堆叠结构的变化
我们知道,activity 在 AMS 的形式是 ActivityRecord,task 在 AMS 的形式TaskRecord,流程 AMS 该管理形式 ProcessRecord. 我们先看下 4 ...
- ASP.Net使用母版页窗
背景:每一个网页的基本框架结构类似: 浏览站点的时候会发现,好多站点中.每一个网页的基本框架都是一样的,比方,最上面都是站点的标题,中间是内容.最以下是站点的版权.开发提供商等信息: watermar ...
- Swift辛格尔顿设计模式(SINGLETON)
本文已更新为2.0语法,具体查看:一叶单例模式 一.意图 保证一个类公有一个实例.并提供一个訪问它的全局訪问点. 二.使用场景 1.使用场景 当类仅仅能有一个实例并且客户能够从一个众所周知的訪问点訪问 ...