1.Lombok

1.1 概述

简化了Model层的代码的编写. 以前pojo类/实体类,需要自己提供set get toString equals hashCode Lombok通过各种注解,简化了以上操作 @Data会自动生成set get toString equals hashCode @NoArgsConstructor自动生成无参构造 @AllArgsConstructor自动生成全参构造 @Accessors(chain = true) //开启链式编程

1.2 在IDEA里安装插件

Settings-选Plugins-搜插件名(lombok)-install

1.3 修改pom.xml文件,添加lombok的jar包依赖

<!--添加jar包依赖-->
<dependencies>
   <!--添加lombok插件-->
   <dependency>
       <groupId>org.projectlombok</groupId>
       <artifactId>lombok</artifactId>
       <version>1.18.20</version>
   </dependency>
</dependencies>

1.4修改pojo类

用lombok前

public class Car {
   private Integer id;
   private String name;
   private String color;
   private Double price;
   //get set tostring
   public Integer getId() {
       return id;
  }

   public void setId(Integer id) {
       this.id = id;
  }
   
   public String getName() {
       return name;
  }
   
   public void setName(String name) {
       this.name = name;
  }
   
   public String getColor() {
       return color;
  }
   
   public void setColor(String color) {
       this.color = color;
  }
   
   public Double getPrice() {
       return price;
  }
   
   public void setPrice(Double price) {
       this.price = price;
  }
   
   @Override
   public String toString() {
       return "Car{" +
               "id=" + id +
               ", name='" + name + '\'' +
               ", color='" + color + '\'' +
               ", price=" + price +
               '}';
  }

}

用lombok后

@Data//自动生成get set tostring hashcode equals
@NoArgsConstructor//自动生成无参构造
@AllArgsConstructor//自动生成全参构造
@Accessors(chain = true)//开启链式编程
public class Student {
   private Integer id;
   private String name;
   private String sex;
}

1.5测试

  //测试lombok
   @Test
   public void get2(){
       Student s = new Student();
       Student s2 = new Student(200,"rose","女");
//       s.setId(100);
//       s.setName("jack");
//       s.setSex("男");
       //对set()可以使用lombok的链式编程
       s.setId(100).setName("jack").setSex("男");
       System.out.println(s);
       System.out.println(s.getId()+s.getName()+s.getSex());
  }

 

//测试Car
@Test
public void get(){
   Car c = new Car();
   c.setName("BMW");
   String s = c.getName();
   System.out.println(s);

   c.setId(100);//自动装箱
   Integer i = c.getId() ;
   System.out.println(i);
   System.out.println(  c.getId() );
}

}

2 热部署

2.1概述

以前服务器改完代码,每次都需要重启服务器 现在只需要改完了重新build就行

2.2添加jar包

<!--添加热部署的jar-->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-devtools</artifactId>
    <version>2.5.3</version>
</dependency>

2.3开启IDEA的热部署的功能

按下组合键: ctrl + shift + alt + / 或者 ctrl + alt + a, 选中Registry, 选中自动编译, ok

2.4创建RunApp启动类

@SpringBootApplication
public class RunApp {
   public static void main(String[] args) {
       SpringApplication.run(RunApp.class);
  }
}

 

2.5创建StuController,接受请求处理响应

@RestController
@RequestMapping("stu")
public class StuController {
   @RequestMapping("get")
   public String get(){
 //热部署:改变成新的数据,也不必重启服务器了,只是build就可以啦
       return "xyz";
  }
}

2.6测试: 只要刷新,就可以获取新数据

http://localhost:8080/stu/get

3 两框架整合

3.1创建RunApp类,启动服务器

@SpringBootApplication
//SpringBoot自动配置了包扫描:默认基于启动类所在的包
public class RunApp {
   public static void main(String[] args) {
       SpringApplication.run(RunApp.class);
  }
}

3.2创建Car类

@Data //自动生成get set tostring...
@NoArgsConstructor //自动生成无参构造
@AllArgsConstructor//自动生成全参构造
@Accessors(chain = true)//开启链式编程
public class Car {
   private String name;
   private String color;
   private Double price;
}

3.3修改pom.xml,添加lombok的jar包

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <parent>
       <artifactId>cgb2106boot03</artifactId>
       <groupId>cn.tedu</groupId>
       <version>0.0.1-SNAPSHOT</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>

   <artifactId>day1602</artifactId>
   
   <dependencies>
       <!--导入lombok简化pojo-->
       <dependency>
           <groupId>org.projectlombok</groupId>
           <artifactId>lombok</artifactId>
           <version>1.18.20</version>
       </dependency>
   </dependencies>

</project>

3.4创建CarController类

@RestController
@RequestMapping("car")
public class CarController {
   @Autowired //想要调用service层的代码--di
   private CarServiceImpl carService;
   @RequestMapping("get")
   public Object get(){
       return carService.get(); //把结果给浏览器返回
  }
}

3.5创建CarService接口

*//定义接口* 
   public interface CarService {  
   *//接口里的方法都是抽象方法,而且都是public的*  
       Car get(); *//获取汽车数据* *//    
       void add(Car c) ;//新增汽车数据* }

3.6创建CarServiceImpl实现类

@Component
//实现了接口后,要重写抽象方法
public class CarServiceImpl implements CarService{
   public Car get(){
       Car c = new Car();
       //lombok的链式编程
       c.setName("保时捷").setColor("红色").setPrice(641000.0);
       return c;
  }
}