1. 简介
-
Spring两大缺点
- 配置过于繁琐
- 项目构建时坐标导入麻烦
-
SpringBoot两大核心功能
- 起步依赖:将具备某种功能的坐标打包到一起,并提供一些默认的应用
- 自动配置:这是一个应用程序启动时的过程,考虑了众多因素,才决定Spring配置应该用哪个,不该用哪个,是Spring自动完成的
2. 快速入门
2.1 代码实现
-
创建maven工程
-
在pom文件中继承SpringBoot的起步依赖
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.0.1.RELEASE</version> </parent>
-
引入web的启动依赖,因为要继承SpringMVC进行Controller的开发,坐标指向的jar包包括了Spring和SpringMVC
<dependencies> <!--web功能的起步依赖--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> </dependencies>
-
编写SpringBoot引导类
//声明该类是一个SpringBoot引导类 @SpringBootApplication public class MySpringBootApplication { //main是java程序的入口 public static void main(String[] args) { //run方法,表示运行SpringBoot的引导类,run参数就是SpringBoot引导类的字节码对象 SpringApplication.run(MySpringBootApplication.class); } }
-
编写Controller
@Controller public class QuickController { @RequestMapping("quick") @ResponseBody public String quick(){ return "hello springboot"; } }
-
测试
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FN9Q1eyE-1605953035029)(https://i.loli.net/2020/11/21/SRJVhAHatcEzxD2.png)]
2.2 小知识点
-
热部署
-
在pom文件添加
<!--热部署配置--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> </dependency>
-
更改idea的配置
- 自己查
-
-
使用idea快速创建SpringBoot项目
- 创建时不选择Maven,而选择Spring Initializr
- 勾选需要使用的组件
- 完成好了自己手动实现代码的功能
3. 原理分析
- parent:做了一些响应的版本控制
- web:包括MVC里面的东西
- @SpringBootApplication:分析后发现可以在resources文件里面加入配置文件,修改默认的配置如端口号和项目部署名什么的
4. 配置文件
-
配置文件类型和作用
- 类型:分为properties和yml
- 作用:覆盖SpringBoot的默认配置
- 加载顺序:yml>yaml>properties,优先级相反
-
application.yml配置文件
-
简介:是一种直观的能够被电脑识别的数据序列化格式,并且容易被人类阅读,容易和脚本交互的,可以被支持YAML库的不同的编程语言程序导入。YAML文件是以数据为核心的,比传统的xml方式更加简介。
-
yml语法
-
普通数据的配置,:后面要用空格隔开
name: zhangsan
-
对象的配置
#对象的配置 person: name: zhangsan age: 18 addr: beijing server: port: 8081
-
行内对象的配置
person: {name: zhagnsan,age: 18,addr: beijing}
-
配置数据、集合(普通字符)
city: - beijing - shanghai - guangzhou - shenzhen city: [beijing,shanghai,guangzhou,shenzhen]
-
配置数据、集合(对象数据)
student: - name: tom age: 18 addr: beijing - name: luky age: 19 addr: shanghai student: [{name: tom,age: 18,addr: luky},{name: luky,age: 19,addr: shanghai}]
-
map配置跟对象配置方式一样
map: key1: value1 key2: value2
-
-
注解
-
@Value,获取yml配置文件里面的值
@Controller public class Quick2Controller { @Value("${name}") private String name; @Value("${person.addr}") private String addr; @RequestMapping("quick2") @ResponseBody public String quick2(){ return name+":"+addr; } }
-
@ConfigurationProperties,可以根据前缀(对象)名称,并且按照属性名称找到对象对应的值注入,需要有getter,setter方法
@Controller @ConfigurationProperties(prefix = "person") public class Quick3Controller { private String name; private String addr; @RequestMapping("quick3") @ResponseBody public String quick3(){ return name+":"+addr; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getAddr() { return addr; } public void setAddr(String addr) { this.addr = addr; } }
-
类上会显示一行提示
点进去将推荐的pom坐标导入,即configuration-processor,后面如果先写好了2.的代码,在yml文件中再写会有提示
-
5. 集成
5.1 集成Mybatis
-
用脚手架创建一个boot项目,创建一个user表
-
添加mybatis起步依赖
<dependency> <groupId>org.mybatis.spring.boot</groupId> //mybatis为名字的头部说明不是boot提供的 <artifactId>mybatis-spring-boot-starter</artifactId> <version>1.1.1</version> </dependency>
-
添加数据库驱动坐标
<dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency>
-
添加数据库连接信息
spring.datasource.driverClassName=com.mysql.jdbc.Driver spring.datasource.url=jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=utf8 spring.datasource.username=root spring.datasource.password=root
-
创建实体bean
ublic class User { // 主键 private Long id; // 用户名 private String username; // 密码 private String password; // 姓名 private String name; }//省略getter,setter方法
-
编写Mapper
@Mapper public interface UserMapper { public List<User> queryUserList(); }
- 注意:@Mapper标记该类是一个mybatis的mapper接口,可以被spring boot自动扫描到spring上下文中
-
配置Mapper映射文件
<?xml version="1.0" encoding="utf-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" > <mapper namespace="com.itheima.mapper.UserMapper"> <select id="queryUserList" resultType="user"> select * from user </select> </mapper>
-
在application.properties中添加mybatis的信息
#spring集成Mybatis环境 #pojo别名扫描包 mybatis.type-aliases-package=com.itheima.domain #加载Mybatis映射文件 mybatis.mapper-locations=classpath:mapper/*Mapper.xml
-
编写测试Controller
@Controller public class MybatisController { @Autowired //userMapper会报错,因为是启动时才加载 private UserMapper userMapper; @RequestMapping("/queryUser") @ResponseBody public List<User> queryUser(){ List<User> users = userMapper.queryUserList(); return users; } }
-
测试
5.2 继承Junit
-
导入坐标(默认已经导入了)
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency>
-
测试类代码
@RunWith(SpringRunner.class) @SpringBootTest(classes = SpringbootMybatisApplication.class) public class MybatisTest { @Autowired private UserMapper userMapper; @Test public void test(){ List<User> users = userMapper.queryUserList(); System.out.println(users); } }
-
控制台打印
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iFGB8rzX-1605953035042)(C:\Users\chenzhijian\AppData\Roaming\Typora\typora-user-images\image-20201119215220540.png)]