V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
bigtom
V2EX  ›  Java

spring 新人求指导

  •  
  •   bigtom ·
    chenminhua · 2018-03-18 11:16:39 +08:00 · 3834 次点击
    这是一个创建于 2202 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

    9 条回复    2018-03-18 21:44:29 +08:00
    sununiq
        1
    sununiq  
       2018-03-18 14:46:33 +08:00
    参数校验直接在 controller 中做了,可以考虑使用 hibernate-validator,业务层的校验放到 service 里面
    Luckyray
        2
    Luckyray  
       2018-03-18 14:50:07 +08:00 via iPhone
    同意楼上
    gravitybox
        3
    gravitybox  
       2018-03-18 16:42:41 +08:00 via Android
    当时写的是,在 controller 和 service.impl 中可能都会有校验代码,在 service.impl 中,mappe 接口 使用自动注入,用起来挺方便的啊
    srx1982
        4
    srx1982  
       2018-03-18 17:17:45 +08:00
    可以试试 spring 自带的 @Valid 相关的一些校检注解,比如 @Max@Min 之类的,Spring 会在进 Controller 之前帮你校检好
    buliugu
        5
    buliugu  
       2018-03-18 17:44:26 +08:00
    参数校验可以用 AOP 做,同一类写在一个 validator 里,业务层的校验老实放在 service
    yidinghe
        6
    yidinghe  
       2018-03-18 18:22:52 +08:00
    参数校验分两种。参数是否存在,格式是否正确,这是第一种校验;而比方我要删除某条记录,传了个 ID 参数,那么对应的记录是否存在,也可以看作是参数校验。这样的校验就不应该放到 Controller 里面了。
    guojxx
        7
    guojxx  
       2018-03-18 18:59:48 +08:00
    我司的做法是 校验或者其他操作都会在 controller 执行,常用的 dao 操作也封装成 service 和 impl,继承和实现这些 base 类就好了,就不用去写 crud 操作了,还有一块是涉及多表事务的,应该在业务类中的 service 另外写接口及对应的实现类做处理。
    bobuick
        8
    bobuick  
       2018-03-18 19:16:29 +08:00   ❤️ 1
    参数校验在 controller 做了 + 1
    koal
        9
    koal  
       2018-03-18 21:44:29 +08:00
    up! 对得起名字啊,control 控制,肯定对于数据的。service 是服务,即只做业务操作。各司其职不会乱套。丢个 baseController 和 baseService 是必须的。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3241 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 55ms · UTC 12:01 · PVG 20:01 · LAX 05:01 · JFK 08:01
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.