学习springboot原因:
由于spring的缺点有以下几点,所以学习了springboot框架
-
配置过于繁琐(项目中太多spring的配置文件)
-
所有配置都代表了开发时的损耗(浪费时间)
-
项目的依赖管理也很繁琐(pom.xml太多)
Springboot概述
springboot是spring家族中的一个全新框架(目前的学习阶段来说是一个全新的,springboot已经存在了好多年了),用来简化spring程序的创建和开发过程,解决上述Spring的缺点。
1.在以往我们通过SpringMVC+Spring+Mybatis(SSM)框架进行开发的时候,我们需要配置web.xml,spring配置,mybatis配置,然后整合在一起。而springboot抛弃了繁琐的xml配置过程,基于约定优于配置的思想,采用大量默认的配置来简化我们的spring开发过程,可以让开发人员不必在配置与逻辑业务之间进行思维的切换,全身心投入到逻辑业务中,提高开发效率。
2.Tomcat,服务器,需要自己准备,准备插件。springboot内置了tomcat插件
3.依赖的优化,SSM时期的依赖,过于多,过于繁琐。springboot对spring相关依赖,进行了封装
springboot快速入门
-
搭建springboot项目环境
搭建springboot有两种方式:
①通过idea直接搭建springboot项目
②创建maven项目,手动引入springboot依赖
注:由于第一种方式需要网络连接,所以本次采用了第二种导入依赖的方式
创建项目之后导入依赖
<!-- 父项目 -->
<!-- 作为当前项目 pom 的 parent,
用于依赖管理,
以便引入依赖时可以省略版本号,
下面的两个依赖和插件都不需要指定版本号 -->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.12.RELEASE</version>
</parent>
<dependencies>
<!-- 内部包含了spring、springMVC、tomcat等依赖 -->
<!-- 为我们提供了嵌入的 Servlet 容器以及 SpringMVC 依赖
并为 Spring MVC 提供了大量自动配置,
可以适用于大多数 Web 开发场景 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- 方便对spring-boot项目进行单元测试 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
</dependency>
</dependencies>
<!-- springboot打包插件,它拥有自己的打包机制,可打war包或直接可运行的jar包 -->
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
定义controller类接收请求
spring-boot-starter-web
为我们提供了spring-webmvc
依赖,我们可以直接使用@Controller
或者@RestController
注解,以及@RequestMapping
来接收http请求。
创建HelloController.java
文件,创建hello()
方法:
package com.qianzi.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class HelloController {
@RequestMapping("hello")
public String hello(){
return "Hello World";
}
}
我们这里使用@RestController
,直接返回Hello World
字符串而不是页面。
定义启动类
由于我们是手动创建的springboot项目所以需要手动创建启动类,如果是直接创建的springboot项目的话,列表中有个HelloWorldApplication文件就是启动类。
package com.qianzi;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication//标记当前类为启动类,一个项目只能有一个 ,主类
public class Application {
public static void main(String[] args) {
//run(启动类.class,arge)
SpringApplication.run(Application.class,args);
}
}
注意:
1.启动类一定要在需要扫描的spring bean类的包外面,包括controller、service、mapper等等
2.@SpringBootApplication
是一个组合注解,包含以下三个注解:
@SpringbootConfiguration:功能类似spring的@Configuration,扫描路径下的Bean会自动被装载到spring上下文(容器)中,代替以前用xml配置的Bean。
@EnableAutoConfiguration:开启自动配置功能,是实现自动装配的关键。
- @ComponentScan:会自动扫描启动类路径下的所有@Component标注的类,包括@Service、@Repository、@Controller
3.定义main方法,启动spring application应用。
启动并测试功能