站长百科知识网

站长百科知识网

Service 层和 Dao 都搞个接口,谁能告诉我为啥

大家好,感谢邀请,今天来为大家分享一下Service层和Dao层真的有必要每个类都加上接口吗的问题,以及和frontapi不建议直接调用DAO的一些困惑,大家要是还不太明白的话,也没有关系,因为接下来将为大家分享,希望可以帮助到大家,解决大家的问题,下面就开始吧!

本文目录

  1. Service层和Dao层真的有必要每个类都加上接口吗
  2. springboot各个层是怎么调用的
  3. jsp哪句话是调用dao方法的
  4. java调用其他模块,是放在control层通过service接口调用好,还是放在service层通过dao的接口调用好

Service层和Dao层真的有必要每个类都加上接口吗

我们开发程序的目的是为了完成业务功能,理想的情况下程序中的每一条语句都应该是与业务直接相关的,例如程序中不应该出现连接数据库,读取某个字段等纯技术性的操作,而应该是得到用户A的基本信息等具有业务含义的操作.dao(dataaccessobject)层存在的意义在于将与数据持久化相关的函数调用剥离出去,提供一个具有业务含义的封装层.原则上说,dao层与utils等帮助类的功能非常类似,只是更加复杂一些,需要依赖更多的对象(如DataSource,SessionFactory)等.如果不需要在程序中屏蔽我们对于特定数据持久层技术的依赖,例如屏蔽对于Hibernate的依赖,在dao层我们没有必要采用接口设计.一些简单的情况下我们甚至可以取消整个dao层,而直接调用封装好的一些通用dao操作函数,或者调用通用的EntityDao类等.程序开发的过程应该是从业务对象层开始的,并逐步将纯技术性的函数调用剥离到外部的帮助类中,同时我们会逐渐发现一些业务操作的特定组合也具有明确的含义,为了调用的方便,我们会把它们逐步补充到service层中.在一般的应用中,业务逻辑很难稳定到可以抽象出接口的地步,即一个service接口不会对应于两个不同的实现,在这种情况下使用接口往往也是没有必要的.在使用spring的情况下原则上应该避免使用getBean的调用方式,应该尽量通过注入来获得依赖对象,但有时我们难免需要直接获取业务对象,在不使用接口的情况下可以采用如下方式classTaskService{publicstaticTaskServicegetInstance(){return(TaskService)BeanLoader.getBean(TaskService.class);}}在程序中我们可以直接使用TaskService.getInstance()来得到TaskService对象.通过命名规范的约定,我们可以从类名推导出spring配置文件中的对象名,因而不需要使用一个额外的硬编码字符串名.

springboot各个层是怎么调用的

springboot各个层调用的方法是建立足够容量大的容器注入不同层级的相关文件,实现对象传输,spring配置文件applicationContext.xml就是spring容器。

<!--注入dao--><beanid="userDaoImpl"class="com.hengdait.spring.dao.impl.UserDaoImpl"/>。

class里面的类被ioc容器拿去创建对象,id是bean的识别节点<!--注入service-->。

<beanid="userServiceImpl"class="com.hengdait.spring.service.impl.UserServiceImpl">。

<propertyname="userDao"ref="userDaoImpl"></property>在service层里面注入dao层,因为在service层要用dao层的对象调用dao层的方法,创建的对象传给userDao(userDao为在serviceImpl里面声明的对象)</bean>。

springboot中分为为controller层、service层、dao层、entity层,他们实际分别指数据库实体层,数据持久层,业务逻辑层,控制层。

jsp哪句话是调用dao方法的

jsp调用dao方法是servet语句调用dao方法,jsp最先是action层,然后是server层,最后是dao层,所以是serverlet方法调用之后才开始dao层的使用

java调用其他模块,是放在control层通过service接口调用好,还是放在service层通过dao的接口调用好

个人建议调用其他模块的接口,建议通过service层调用。如果A模块的service调用B模块的dao,B模块的dao和A模块耦合。假设随着业务的发展,需要将A、B模块各自单独发布成一个服务,那么A、B模块都要维护B模块的dao,并且A、B模块的开发人员都要熟悉B模块的dao,B模块的表增减字段后,需要同时通知A、B模块的开发人员,显然不便于维护。而且由于A、B模块都引入了B的dao模块,意味着A模块可以直接访问B模块dao的所有功能,而dao模块通常是一些基础操作。反之,service层一般是有具体业务含义的,通过service对外暴露具有特定含义的业务接口,可以避免将底层的操作全部暴露给外部模块。再假设随着业务的进一步发展,A、B模块需要进行分库,A、B模块分别使用各自的数据库,那么A再引入B的dao则必须访问B的数据库,意味着A要访问A、B两个模块的数据库,如果还有C、D模块呢,则A要访问A、B、C、D多各模块的数据库,显然不利于开发和维护,也不利于被引用模块的数据安全。

关于Service层和Dao层真的有必要每个类都加上接口吗的内容到此结束,希望对大家有所帮助。

Web 项目中,Service 层和 Dao 层真的有必要每个类都加上接口吗

标签:# 有必要# 我的# 加上# 接口# 每个