spring 新人求指导

2018-03-18 11:16:39 +08:00
 bigtom

学习 spring 中,dao 层使用 mybatis。目前把很多业务逻辑都写到 service 层。比如 save 一个对象到数据库前,需要对数据做大量的校验,而这些逻辑如果都写到 service 层会让 service 变的很臃肿。再比如对某个实体类需要拿他相关的一些类的数据,acoount.getMovie()之类,写在 service 层感觉也不太好。 除此之外,在 service 层写一些 private 方法(比如 saveABC ),然后在同一层调用也容易出现问题。

但是如果把这些方法写在 Model 层,则需要把 mybatis 的 mapper 注入到数据对象里面。感觉也很麻烦。

希望各位 java 大佬和 spring 大佬指导一下正确姿势,谢谢

3866 次点击
所在节点    Java
9 条回复
sununiq
2018-03-18 14:46:33 +08:00
参数校验直接在 controller 中做了,可以考虑使用 hibernate-validator,业务层的校验放到 service 里面
Luckyray
2018-03-18 14:50:07 +08:00
同意楼上
gravitybox
2018-03-18 16:42:41 +08:00
当时写的是,在 controller 和 service.impl 中可能都会有校验代码,在 service.impl 中,mappe 接口 使用自动注入,用起来挺方便的啊
srx1982
2018-03-18 17:17:45 +08:00
可以试试 spring 自带的 @Valid 相关的一些校检注解,比如 @Max@Min 之类的,Spring 会在进 Controller 之前帮你校检好
buliugu
2018-03-18 17:44:26 +08:00
参数校验可以用 AOP 做,同一类写在一个 validator 里,业务层的校验老实放在 service
yidinghe
2018-03-18 18:22:52 +08:00
参数校验分两种。参数是否存在,格式是否正确,这是第一种校验;而比方我要删除某条记录,传了个 ID 参数,那么对应的记录是否存在,也可以看作是参数校验。这样的校验就不应该放到 Controller 里面了。
guojxx
2018-03-18 18:59:48 +08:00
我司的做法是 校验或者其他操作都会在 controller 执行,常用的 dao 操作也封装成 service 和 impl,继承和实现这些 base 类就好了,就不用去写 crud 操作了,还有一块是涉及多表事务的,应该在业务类中的 service 另外写接口及对应的实现类做处理。
bobuick
2018-03-18 19:16:29 +08:00
参数校验在 controller 做了 + 1
koal
2018-03-18 21:44:29 +08:00
up! 对得起名字啊,control 控制,肯定对于数据的。service 是服务,即只做业务操作。各司其职不会乱套。丢个 baseController 和 baseService 是必须的。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/439072

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX