文章目录
Spring Boot
优点
初体验
pom.xml配置
lombok
快速实现 crud
测试
Spring Boot
Spring Boot 是一个快速开发的框架,可以迅速搭建出一套基于 Spring 框架体系的应用,是Spring Cloud 微服务的基础
Spring Boot 开启了各种自动装配,从而简化开发,不需要编写各种配置文件,只需要引入相关依赖,就可以迅速搭建一个应用 application
优点
1.不需要 web.xml
2.不需要 springmvc.xml
3.不需要 tomcat,因为Spring Boot内嵌了 tomcat
4.不需要配置 Json 解析,支持 REST 架构
5.个性化配置非常简洁清晰
初体验
这里使用 IDEA 开发工具,打开项目结构,点击加号,新建模块
新建模块选择 Spring Initializr,然后就是项目名,类型选择 maven
选择 Spring Web 模块
点击完成
pom.xml配置
<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <!-- 继承父包 --> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.6.6</version> <relativePath/> <!-- lookup parent from repository --> </parent> <groupId>com.liu</groupId> <artifactId>springboot_day</artifactId> <version>0.0.1-SNAPSHOT</version> <name>springboot_day</name> <description>springboot_day</description> <properties> <java.version>1.8</java.version> </properties> <dependencies> <!--web 启动jar包--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <!--引入lombok--> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.6</version> <scope>provided</scope> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project>
lombok
可以看到,pom.xml中引入了一个 lombok 的依赖 jar 包,下面就来介绍一下它
lombok是什么
lombok既是一个IDE插件,也是一个项目要依赖的jar包
lombok能做什么
lombok通过注解消除实际开发中的样板式代码
什么是样板式代码?
比如 getter、setter方法,重写toString、equals方法等,这些代码没有什么技术含量,但是常常都要写,所以叫它样板式代码
lombok怎么使用
1.可以在官网下载 jar 包使用
2.如果你是使用maven构建项目,你可以引入依赖坐标即可
<!--引入lombok--> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.6</version> <scope>provided</scope> </dependency>
3.IDEA插件也可以
在实体类上添加注解@Data,可以看到,在类结构中自动给我们生成了 getter setter toString 等等方法……,是不是很方便呢,其他常用注解如下,在类上可以使用@Data,在方法上可以使用 @Setter,@Getter,@Log4j注解等等
@Data 注解在类上;提供类所有属性的 getting 和 setting 方法,此外还提供了equals、hashCode、toString 方法
@Setter :注解在属性上;为属性提供 setting 方法
@Getter :注解在属性上;为属性提供 getting 方法
@Log4j :注解在类上;为类提供一个 属性名为log 的 log4j 日志对象
@AllArgsConstructor :注解在类上,带参数构造器
ok,关于 lombok 就介绍到这里
快速实现 crud
目录结构
pom.xml 依赖 jar 包
这里先导入依赖的父包
<!-- 继承父包 --> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.6.6</version> <relativePath/> <!-- lookup parent from repository --> </parent> <dependencies> <!--web 启动jar包--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <!--引入lombok--> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.6</version> <scope>provided</scope> </dependency> </dependencies>
实体类 User
实体类,由于使用了 lombok,看起来就很舒服了
@Data 给属性添加get set toString……
@AllArgsConstructor 添加一个所有参数的构造器
import lombok.AllArgsConstructor; import lombok.Data; @Data @AllArgsConstructor public class User { private long id; private String name; private int age; }
UserService接口
Service接口,这里就是快速测试一下,所以就省去了 DAO 层的开发,简简单单的 crud
public interface UserService { // 查所有的用户 Collection<User> findAll(); // 根据id查询用户 User findById(long id); // 新增用户 void save(User user); // 删除用户 void deleteById(long id); }
UserServiceImpl 业务层
注意要使用@Service注解,这样 Spring 才能扫描到 bean
@Service public class UserServiceImpl implements UserService { private static Map<Long, User> userMap; static { userMap = new HashMap<>(); userMap.put(1L,new User(1L,"小刘",18)); userMap.put(2L,new User(2L,"张三",28)); userMap.put(3L,new User(3L,"李四",45)); userMap.put(4L,new User(4L,"韩非",16)); } @Override public Collection<User> findAll() { return userMap.values(); } @Override public User findById(long id) { return userMap.get(id); } @Override public void save(User user) { userMap.put(user.getId(),user); } @Override public void deleteById(long id) { userMap.remove(id); } }
UserController 控制层
REST软件架构使用了CRUD原则,该原则告诉我们对于资源(包括网络资源)只需要四种行为:创建(Create)、获取(Read)、更新(Update)和销毁(DELETE),就可以组合成其他无数的操作。其实世界万物都是遵循这一规律:生、变、见、灭。这个原则是源自于我们对于数据库表的数据操作:insert(生)、select(见)、update(变)和delete(灭),所以有时候CRUD也写作为RUDI(read update delete insert)。这四个操作是最基本的操作,即无法再细分的操作,通过它们可以构造复杂的操作过程,正如数学上四则运算是数字的最基本的运算一样。
就是说使用这里使用 @RestController 它就相当于是 @Controller 和 @RequestBody 的结合体,其他的就是 SpringMVC 的基础知识了
// 表示这是一个REST架构风格的控制器 @RestController @RequestMapping("/user") public class UserController { // 需要 repository @Autowired注解 自动注入 @Autowired private UserService userService; @GetMapping("/findAll") public Collection<User> findAll() { return userService.findAll(); } @GetMapping("/findById/{id}") public User findById(@PathVariable("id") long id) { System.out.println("我被执行了"); return userService.findById(id); } @PostMapping("/save") public void save(@RequestBody User user) { userService.save(user); } @PutMapping("/update") public void update(@RequestBody User user) { userService.save(user); } @DeleteMapping("deleteById/{id}") public void deleteById(@PathVariable long id) { userService.deleteById(id); } }
yml Spring Boot 配置文件
修改一下 toncat 服务的端口为 9090,也可以做其他配置,这里先掠过
server: port: 9090
启动类
启动类,这里需要注意启动类的位置的包位置,必须能包含所有的子包,这样它启动之后,就知道自动扫描当前包以及子包,发现注解进行 bean 的定义以及自动装配等一系列的操作,如果不能包含,启动会报错,这一点需要注意
@SpringBootApplication public class SpringbootDayApplication { public static void main(String[] args) { SpringApplication.run(SpringbootDayApplication.class, args); } }
🆗,现在启动服务
启动成功,现在使用 postman 进行接口的测试
测试
用于查询所有用户
接口地址 : http://localhost:9090/user/findAll
请求方式 : GET
参数 : 空
用于根据id查询用户
接口地址 : http://localhost:9090/user/findById/2
请求方式 : GET
参数 : id 2
保存一个user对象
接口地址 : http://localhost:9090/user/save
请求方式 : POST
参数 : user对象