天天看点

【springBoot】springBoot 学习笔记

原因如下:

分别定义接口和实现类是java架构思想中的开闭原则(扩展开发,修改关闭)的体现,例如:

假如你这个注册刚开始是对国内用户开放,中国用户注册成功返回“注册成功”,随着业务扩展,需要海外用户开放,假如美国用户返回“register success”,如果你有接口,可以再美国的americauserserviceimpl.java中实现一个userservice.java的接口,来定义美国用户的注册业务,而不是在之userserviceimpl.java中增加if else来对不同逻辑进行处理,这样,后续如果某个地区的注册业务有变动,只需要修改对应地区的实现类,修改不会影响到其他地区的实现类,降低了耦合性。

那是不是所有的项目都应该用到这样思想呢?

对于小型项目来说,确实可以不用多写一个接口,直接写实现类就可以了。

接口+实现类是一种良好的编码习惯而已。就好像写代码时候的缩进和驼峰命名法。

为什么要用service接口?是让表示层不依赖于业务层的具体实现。为什么要用dao接口?是让业务层不依赖于持久层的具体实现。举个例子,用dao接口,那么持久层用hibernate,还是用ibatis,还是 jdbc,随时可以替换,不用修改业务层service类的代码。

不用接口的话,假如修改了dao中的代码,因为service引用了dao中的类,那么也要改变service里面的代码,改完之后要重新编译运行,当项目比较大的时候,编译和运行很浪费时间的,而且会产生一些意外,本来只要编译dao中的代码,现在不光要编译dao中的代码,还要编译service。因为你不用接口,间接着action里的代码也要改,因为action中引用了service中的类,到最后,就变成了,牵一发而动全身。

为什么要写imp实现类呢,是因为后期维护的时候如果要修改功能只需要修改实现类里面的那个代码,而不需要修改其他包的代码。

@requestmapping 和 @getmapping @postmapping 区别

@getmapping用于将http get请求映射到特定处理程序的方法注解

是一个组合注解,是@requestmapping(method = requestmethod.get)的缩写。

@postmapping用于将http post请求映射到特定处理程序的方法注解

是一个组合注解,是@requestmapping(method = requestmethod.post)的缩写。