什么时候用spring
论公司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注解AOP的异常处理
一.前言 项目刚刚开发的时候,并没有做好充足的准备.开发到一定程度的时候才会想到还有一些问题没有解决.就比如今天我要说的一个问题:异常的处理.写程序的时候一般都会通过try...catch...fin ...
- 玩转spring boot——快速开始
开发环境: IED环境:Eclipse JDK版本:1.8 maven版本:3.3.9 一.创建一个spring boot的mcv web应用程序 打开Eclipse,新建Maven项目 选择quic ...
- Spring基于AOP的事务管理
Spring基于AOP的事务管理 事务 事务是一系列动作,这一系列动作综合在一起组成一个完整的工作单元,如果有任何一个动作执行失败,那么事务 ...
- [Spring]IoC容器之进击的注解
先啰嗦两句: 第一次在博客园使用markdown编辑,感觉渲染样式差强人意,还是github的样式比较顺眼. 概述 Spring2.5 引入了注解. 于是,一个问题产生了:使用注解方式注入 JavaB ...
- 学习AOP之透过Spring的Ioc理解Advisor
花了几天时间来学习Spring,突然明白一个问题,就是看书不能让人理解Spring,一方面要结合使用场景,另一方面要阅读源代码,这种方式理解起来事半功倍.那看书有什么用呢?主要还是扩展视野,毕竟书是别 ...
- 学习AOP之深入一点Spring Aop
上一篇<学习AOP之认识一下SpringAOP>中大体的了解了代理.动态代理及SpringAop的知识.因为写的篇幅长了点所以还是再写一篇吧.接下来开始深入一点Spring aop的一些实 ...
- 学习AOP之认识一下Spring AOP
心碎之事 要说知道AOP这个词倒是很久很久以前了,但是直到今天我也不敢说非常的理解它,其中的各种概念即抽象又太拗口. 在几次面试中都被问及AOP,但是真的没有答上来,或者都在面上,这给面试官的感觉就是 ...
- 为什么做java的web开发我们会使用struts2,springMVC和spring这样的框架?
今年我一直在思考web开发里的前后端分离的问题,到了现在也颇有点心得了,随着这个问题的深入,再加以现在公司很多web项目的控制层的技术框架由struts2迁移到springMVC,我突然有了一个新的疑 ...
- Spring之旅(2)
Spring简化Java的下一个理念:基于切面的声明式编程 3.应用切面 依赖注入的目的是让相互协作的组件保持松散耦合:而AOP编程允许你把遍布应用各处的功能分离出来形成可重用的组件. AOP面向切面 ...
- Spring之旅
Java使得以模块化构建复杂应用系统成为可能,它为Applet而来,但为组件化而留. Spring是一个开源的框架,最早由Rod Johnson创建.Spring是为了解决企业级应用开发的复杂性而创建 ...
随机推荐
- Qt5官方demo分析集29——Extending QML - Property Value Source Example
此系列的所有文章都可以在这里查看http://blog.csdn.net/cloud_castle/article/category/2123873 接上文Qt5官方demo解析集28--Extend ...
- Codeforces 437D The Child and Zoo(贪心+并查集)
题目链接:Codeforces 437D The Child and Zoo 题目大意:小孩子去參观动物园,动物园分非常多个区,每一个区有若干种动物,拥有的动物种数作为该区的权值.然后有m条路,每条路 ...
- UITableView的常用方法
一.UITableView的代理方法 #pragma mark 每一行的高度 - (CGFloat)tableView:(UITableView *)tableView heightForRowAtI ...
- PHP文件上传后缀名与文件类型对照表
ie 火狐 id 后缀名 php识别出的文件类型 0 gif image/gif 1 jpg image/jpeg 2 png image/png 3 bmp image/bmp 4 psd appl ...
- 间支付系统,DataGridView
我们通常看到很多的学习使用控制数据库和接口连接--DataGridView,在我们的房间,当我们敲开使用第一遍阶段似该控件--MSHFlexGrid,随着学习的深入,发现我们用到的平台越来越人性化了, ...
- JTAG应该如何接线
下面是某个ARM9评估板的原理图: 注意: 1. Vref和Vtarget可以直接连在一起,由被调试板提供3.3V或5V电源: 2. nTRST,最好上拉: 3. TDI,最好上拉 4. TMS,最好 ...
- 从Http它被连接到WebSocket
1.HTTP协议长期-fi支持和各支持的浏览器 http://blog.csdn.net/fenglibing/article/details/7100222 2.WEBclient与服务端信息交互的 ...
- Android项目---ActivityGroup的使用
ActivityGroup在一年前已经被说明不用了,但是腾讯QQ,新浪微博上也不乏ActivityGroup的身影.所以,即使是过时的东西,也有学习的必要,当然项目中也是可以添加的.在网上找了一个博客 ...
- MVC 插件式开发
MVC 插件式开发 在开发一个OA系统是,我们可能遇到 A模块. B模块 .C模块,这也模块组成一个完整的系统,买给客服.现在又有一个客服要我们做一个OA系统,唉我们发现,跟上一个OA系统差不多,但没 ...
- wcf实例模型(随记)
-----------------------------------------实例模型: 1.InstanceContentextMode: -------PerCall(单调):无状态,每次调用 ...