文章目录
- 创建SpringBoot项目
- 快速入门
- 创建Controller
- 启动项目
- 打包项目
- 创建工件
- SpringBoot概述
- SpringBoot优点
- 起步依赖
- 切换Web服务器
- 配置文件
- 配置文件
- application.properties
- application.yml
- application.yaml
- 三种配置文件优先级
- yaml格式
- 读取配置数据(yml为例)
- 简单类型
- Environment对象
- 自定义对象
- SpringBoot整合Junit
- SpringBoot整合mybatis
创建SpringBoot项目
快速入门
创建Controller
@RestController
@RequestMapping("/books")
public class BookController {
@GetMapping("/{id}")
public String getById(@PathVariable Integer id){
System.out.println("id ==> "+id);
return "hello , spring boot!";
}
}
@RestController是将@Controller和@ResponseBody的作用整合
- @Controller是Spring中@Component注解的一种类型,将类标记为Bean注入到IOC容器中统一管理
- @ResponseBody是将controller的方法返回的对象通过适当的转换器转换为指定的格式之后,写入到response对象的body区
@RequestMapping注解是一个用来处理请求地址映射的注解,可用于映射一个请求或一个方法,可以用在类或方法上。 - 标注在方法上,表示在类的父路径下追加方法上注解的地址将会调用该方法
- 标注在类上,表示类中的所有响应请求的方法都是以该地址作为父路径
- @RequestMapping 的 value 属性是通过当前请求的请求地址来匹配请求**(必须设值)**
- @RequestMapping的method属性是通过当前请求的请求方式来匹配请求
- @RequestMapping的params属性是通过当前请求的请求参数来匹配请求
- @GetMapping:处理get方式请求的映射
- @GetMapping就相当于@RequestMapping(method=RequestMethod.GET),它会将get映射到特定的方法上。
- @PostMapping:处理post方式请求的映射
- @PutMapping:处理put方式请求的映射
- @DeleteMapping:处理delete方式请求的映射
@PathVariable 可以将 URL 中占位符参数绑定到控制器(controller)处理方法的形参中:
- URL 中的 {xxx} 占位符可以通过@PathVariable(“xxx“) 绑定到操作方法的形参中。
@RequestParam用于将指定的请求参数赋值给方法中的形参
- 如果参数前写了@RequestParam(xxx),那么前端必须有对应的xxx名字才行
- 需要在处理URL的控制方法中获取URL中的参数,也就是?key1=value1&key2=value2这样的参数列表
启动项目
运行该启动类即可——自动使用tomcat服务器
打包项目
创建工件
xxx.jar包下中没有主清单属性解决办法:
pom.xml中对应位置,删除该行即可,重新打包jar文件,重新运行
重新运行,成功!
SpringBoot概述
SpringBoot优点
- 自动配置。这个是用来解决 Spring 程序配置繁琐的问题
- 起步依赖。这个是用来解决 Spring 程序依赖设置繁琐的问题
- 辅助功能(内置服务器,…)。我们在启动 SpringBoot 程序时既没有使用本地的 tomcat 也没有使用tomcat 插件,而是使用 SpringBoot 内置的服务器。
起步依赖
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.5.0</version>
</parent>
使用它之后,常用的包依赖可以省去 version 标签
spring-boot-starter-parent指定父工程spring-boot-dependencies
spring-boot-dependencies中含有properties定义了各个技术软件依赖的版本,避免了使用不同软件技术时考虑版本兼容问题
切换Web服务器
将tomcat切换为jetty
- 使用exclusions排除tomcat服务器
- 引入jetty的依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions>
<exclusion>
<artifactId>spring-boot-starter-tomcat</artifactId>
<groupId>org.springframework.boot</groupId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jetty</artifactId>
</dependency>
配置文件
配置文件
resources下
application.properties
server.port为端口号(默认为8080)
application.yml
删除application.properties,创建application.yml
格式如下:
server:
port: 81
application.yaml
删除application.properties,创建application.yaml
server:
port: 83
可在项目结构中的Facet中选择Spring设置 配置文件
三种配置文件优先级
properties>yml>yaml
yaml格式
lesson: SpringBoot
server:
port: 80
enterprise:
name: itcast
age: 16
tel: 4006184000
subject:
- Java
- 前端
- 大数据
读取配置数据(yml为例)
简单类型
可直接用@Value进行读取
@Value("${enterprise.subject[0]}")
private String subject_00;
Environment对象
使用 @Autowired 注解注入 Environment 对象的方式读取数据。这种方式 SpringBoot 会将配置文件中所有的数据封装到 Environment 对象中,如果需要使用哪个数据只需要通过调用Environment 对象的getProperty(String name) 方法获取
@RestController
@RequestMapping("/books")
public class BookController {
@Autowired
private Environment env;
@GetMapping("/{id}")
public String getById(@PathVariable Integer id){
System.out.println(env.getProperty("lesson"));
System.out.println(env.getProperty("enterprise.name"));
System.out.println(env.getProperty("enterprise.subject[0]"));
return "hello , spring boot!";
}
}
自定义对象
将实体类 bean 的创建交给 Spring 管理。
- 在自定义的实体类上添加 @Component 注解
使用 @ConfigurationProperties 注解表示加载配置文件 - 在该注解中也可以使用 prefix 属性指定只加载指定前缀的数据
- 如
@ConfigurationProperties(prefix = "enterprise")
在Controller类中直接用@Autowired注入该对象
pom.xml中需要加入如下依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
SpringBoot整合Junit
- 在测试类上添加 SpringBootTest 注解
- 使用 @Autowired 注入要测试的资源
- 定义测试方法进行测试
@SpringBootTest
class Springboot07TestApplicationTests {
@Autowired
private BookService bookService;
@Test
public void save() {
bookService.save();
}
}
SpringBoot整合mybatis
- 重点为配置处:application.yml
spring:
datasource:
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://localhost:3306/xxx
username: root
password: root
type: com.alibaba.druid.pool.DruidDataSource
- 还需要加入依赖
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.16</version>
</dependency>
- 需要将Dao上加上@Mapper
@Mapper
public interface BookDao {
@Select("select * from tbl_book where id = #{id}")
public Book getById(Integer id);
}
- Dao的对象直接使用@Autowired即可自动装配