本周回顾
1、如何搭建Spring、SpringBoot、Maven工程及注意事项?
对于SpringBoot和Spring的关系,我们可以看到
SpringBoot嵌入了Tomcat服务器
pom文件中使用"starters"来简化Maven配置
集成了测试库,在Spirng中,我们需要引入Spring Test,JUnit这些库,而在SpringBoot中我们只需要添加spring-boot-starter-test依赖项即自动包含
SpringBoot不在依靠XML文件,而只需要注解即可完成装配
2、node.js的安装使用
- node.js最常见的问题就是下依赖出问题,这需要一个一个对照查看,有时候需要重新按个nodesas之类的
3、对Vue进行修改完成前后端交互
修改router路由设置的index界面
跳转页面的布局设置
3、写一个api ,记得要导入到跳转页面
4、后端开发的包结构与逻辑
实际上后端开发的逻辑上一题也给出来了,我们来看一下包结构
- Controller:负责前后端交互
- Service:负责一些复杂的逻辑方法。我们通常是写一个接口,再去实现
- Mapper:负责和数据库进行交互
- entity:实体类
- repository:和mapper很像,是和数据库进行交互的
- config: 它装的是配置类,如果我们要引入额外的插件比如分页插件,就把配置类放在这个包里
5、MyBatis-Plus插件的使用及其配置
MyBatis-Plus,其使用是很简单的,只要引入配置即可,他最大的特点就是封装了许多接口,比如BaseMapper、分页插件等
- 分页插件
@Bean public PaginationInterceptor paginationInterceptor() { return new PaginationInterceptor(); }
- IService接口
extends IService<实体类>
- ServiceImpl接口
ServiceImpl<Mapper,实体类>
查漏补缺
1、后端提交方法如Put、Post...各有什么含义
GET :请求从服务器获取特定资源。举个例子:GET /users
(获取所有学生),注意所谓获取,就是只会访问一下,并不会对服务器的数据进行任何的修改
//这两个是一样 @GetMapping("/users") @RequestMapping(value="/users",method=RequestMethod.GET)
PUT :更新服务器上的资源(客户端提供更新后的整个资源)。举个例子:PUT /users/12
(更新编号为 12 的学生);我们把put和get对比会发现,put实际上会把数据传到服务器中,对服务器的数据进行修改,注意-->是修改。
@PutMapping("/users/{userId}") @RequestMapping(value="/users/{userId}",method=RequestMethod.PUT)
POST :在服务器上创建一个新的资源。举个例子:POST /users
(创建学生)
其实post和put很想,但post更加侧重于增加。
DELETE :从服务器删除特定的资源。举个例子:DELETE /users/12
(删除编号为 12 的学生)
2、Spring中各种注解有什么意义
1、@SpringBootApplication
这个标签我们实际动的很少,其可以被看做@Configuration、@EnableAutoConfiguration、@ComponentScan的综合;
- Configuration:允许在 Spring 上下文中注册额外的 bean 或导入其他配置类,有了他Bean才会被扫描到。通常我们使用他,使得我们向SpringBoot中注入一个自定义的Bean,将其托管给SpringBoot。最常用的就是我们向SpringBoot注入分页插件
@Configuration @MapperScan("com.atguigu.yygh.hosp.mapper") public class HospConfig { // 分页插件,显然这个类中加了@Configuration注解 @Bean public PaginationInterceptor paginationInterceptor() { return new PaginationInterceptor(); }}
ComponentScan:这个关键字注解在主启动类上,有了他,我们才可能扫描被@Component (@Service,@Controller)注解的 bean。
@AliasFor("basePackages") String[] value() default {}; @AliasFor("value") String[] basePackages() default {};
显然,basePackages就是一个包,有时候我们创建了很多module所以我们额外注解一个ComponentScan把basePackages加进去。
EnableAutoConfiguration:启用 SpringBoot 的自动配置机制。
2、Spring Bean相关
Spring Bean相关的注解有一大堆:
@Autowired:自动把类注入到 Spring 容器中进行管理
@Component :通用的注解,可标注任意类为Spring 组件。如果一个 Bean 不知道属于哪个层,可以使@Component 注解标注。
这玩意在什么时候用呢?在你发现一个类注解了一个@Autowired依然没啥用的时候,你就得去看看它定义的地方有没有加@Component
@Repository : 对应持久层即 Dao 层,主要用于数据库相关操作。有时候我们把MapperScan搞混,实际上那个是Mybatis
@Service: 对应服务层,主要涉及一些复杂的逻辑,需要用到 Dao 层。
@Controller`: 对应 Spring MVC 控制层,主要用户接受用户请求并调用 Service 层返回数据给前端页面。
@RestController:注解是@Controller和@ResponseBody的合集,表示这是个控制器 bean,它会使得Controller返回一个Json类型的数据
@Scope 声明 Spring Bean 的作用域,使用方法:
@Bean @Scope("singleton") public Person personSingleton() { return new Person();}
四种常见的 Spring Bean 的作用域:
- singleton : 唯一 bean 实例,Spring 中的 bean 默认都是单例的。
- prototype : 每次请求都会创建一个新的 bean 实例。
- request : 每一次 HTTP 请求都会产生一个新的 bean,该 bean 仅在当前 HTTP request 内有效。
- session : 每一次 HTTP 请求都会产生一个新的 bean,该 bean 仅在当前 HTTP session 内有效。
@Scope这个注解我见得比较少,其具体要和Spring的IOC一起探讨
3、一些附带的注解
如上图所示,这些注解或许更适合查表进行理解
- @ExceptionHandler : 注解声明异常处理方法
- @ExceptionHandler :注解声明异常处理方法
这两个注解是与异常处理相关,我们可以通过他来对SpringBoot工程中的异常进行处理!
3、Spring的服务器响应
3.1 传参
@PathVariable:用于获取路径参数
RequestParam:用于获取查询参数
RequestBody :用于读取 Request 请求(可能是 post、put等)的 body 部分并且类型是json格式的数据,接收到数据之后会自动将数据绑定到 Java 对象上去。说白了就是传一个json数据过来,当然这玩意要能和你的实体类属性对的上!
注意:一个方法就只有一个requestbodyXXX(@Valid @RequestBody(required = true) HospitalSet hospitalSet){}
另外,@Valid 这个注解是用于参数校验的。就类似于提醒密码格式不正确那样