本周回顾

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进行修改完成前后端交互

  1. 修改router路由设置的index界面

  2. 跳转页面的布局设置

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数据过来,当然这玩意要能和你的实体类属性对的上!
    注意:一个方法就只有一个requestbody

    XXX(@Valid @RequestBody(required = true) HospitalSet hospitalSet){}

另外,@Valid 这个注解是用于参数校验的。就类似于提醒密码格式不正确那样