学习 spring 中,dao 层使用 mybatis。目前把很多业务逻辑都写到 service 层。比如 save 一个对象到数据库前,需要对数据做大量的校验,而这些逻辑如果都写到 service 层会让 service 变的很臃肿。再比如对某个实体类需要拿他相关的一些类的数据,acoount.getMovie()之类,写在 service 层感觉也不太好。 除此之外,在 service 层写一些 private 方法(比如 saveABC ),然后在同一层调用也容易出现问题。
但是如果把这些方法写在 Model 层,则需要把 mybatis 的 mapper 注入到数据对象里面。感觉也很麻烦。
希望各位 java 大佬和 spring 大佬指导一下正确姿势,谢谢
1
sununiq 2018-03-18 14:46:33 +08:00
参数校验直接在 controller 中做了,可以考虑使用 hibernate-validator,业务层的校验放到 service 里面
|
2
Luckyray 2018-03-18 14:50:07 +08:00 via iPhone
同意楼上
|
3
gravitybox 2018-03-18 16:42:41 +08:00 via Android
当时写的是,在 controller 和 service.impl 中可能都会有校验代码,在 service.impl 中,mappe 接口 使用自动注入,用起来挺方便的啊
|
4
srx1982 2018-03-18 17:17:45 +08:00
|
5
buliugu 2018-03-18 17:44:26 +08:00
参数校验可以用 AOP 做,同一类写在一个 validator 里,业务层的校验老实放在 service
|
6
yidinghe 2018-03-18 18:22:52 +08:00
参数校验分两种。参数是否存在,格式是否正确,这是第一种校验;而比方我要删除某条记录,传了个 ID 参数,那么对应的记录是否存在,也可以看作是参数校验。这样的校验就不应该放到 Controller 里面了。
|
7
guojxx 2018-03-18 18:59:48 +08:00
我司的做法是 校验或者其他操作都会在 controller 执行,常用的 dao 操作也封装成 service 和 impl,继承和实现这些 base 类就好了,就不用去写 crud 操作了,还有一块是涉及多表事务的,应该在业务类中的 service 另外写接口及对应的实现类做处理。
|
8
bobuick 2018-03-18 19:16:29 +08:00 1
参数校验在 controller 做了 + 1
|
9
koal 2018-03-18 21:44:29 +08:00
up! 对得起名字啊,control 控制,肯定对于数据的。service 是服务,即只做业务操作。各司其职不会乱套。丢个 baseController 和 baseService 是必须的。
|