bigtom
V2EX  ›  Java

spring 新人求指导

  •  
  •   bigtom ·
    chenminhua · Mar 18, 2018 · 4815 views
    This topic created in 3004 days ago, the information mentioned may be changed or developed.

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

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

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

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