Spring Boot回顾
一、概述
1、Spring的优缺点
- 优点
- 无需开发ELB,通过IOC和AOP,就可以使用POJO(简单的Java对象)实现ELB的功能
- 缺点:
- 依赖管理导入Maven耗时耗力
- 注解繁琐
2、SpringBoot的特点
- 入门简单,无需配置
- 提供非功能特性(嵌入式服务器)
二、快速入门
1、环境搭建
- 继承起步依赖
- 添加web的起步依赖
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.1.RELEASE</version>
</parent>
<groupId>com.itheima</groupId>
<artifactId>SpringBoot_QuickStart</artifactId>
<version>1.0-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
- 编写引导类
package com.itheima;
@SpringBootApplication
public class MySpringBootApplication {
public static void main(String[] args) {
SpringApplication.run(MySpringBootApplication.class);
}
}
- 编写Controller
package com.itheima.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
public class QuickController {
@RequestMapping("/quick")
@ResponseBody
public String quick(){
return "hello Spring Boot";
}
}
2、细节
- @SpringBootApplication是引导类,run方法中运行引导类名,通常情况下引导类就是main方法所在的类
- 添加坐标
热部署:修改Controller源码时,不再需要重启项目即可自动加载
<!--热部署配置-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
</dependency>
- 修改设置,Build,Compiler,勾选Build project automatically
- Ctrl+Shift+Alt+/,选择Registry,勾选app.running
3、IDEA创建SpringBoot工程
- Spring Initializer
- 添加Module时选中Web
- 编写Controller
package com.itheima.controller;
@RestController
//将controller和responsebody放在一起,不再需要写responsebody
public class QuickController {
@RequestMapping("/quick2")
public String quick(){
return "SpringBoot!!!";
}
}
三、原理分析
1、起步依赖-parent
通过二次继承实现版本控制

2、起步依赖--web
内部有web相关的环境,如Spring/Spring MVC和Tomcat

四、配置文件
1、默认配置与覆盖

SpringBoot会从Resources/META-INF目录下加载application.properties或application.yml(application.yaml)文件,用来替换默认配置
加载顺序:

2、yml文件的介绍
- YML文件格式是YAML (YAML Aint Markup Language)编写的文件格式
- YML文件的扩展名可以使用.yml或者.yaml
- 普通数据和对象数据的配置
# 普通数据的配置
name: zhangsan # 对象的配置
# 通过缩进
#person:
# name: zhangsan
# age: 18
# addr: beijing server:
port: 8083 # 行内对象配置(用的少)
person: {name: zhangsan,age: 18,addr: beijing}
- 集合的配置
# 配置数组、集合(普通字符串)
city:
- beijing
- tianjin
- chongqing
- shanghai
- jinan
# 行内方式
#city: [beijing,jinan,hefei,nanjing] # 数组、集合中存放对象数据
student:
- name: tom
age: 18
addr: hefei
- name: xiaoming
age: 17
addr: tianjin # 行内方式
# student: [{name: tom,age: 18,addr: nanjing},{name: xiaoming,age: 18,addr: tianjin}] # map配置
map:
key1: value1
key2: value2
3、数据映射
- @Value注解:将配置文件的值映射到Bean属性上
@Controller
public class Quick2Controller {
@Value("${name}")
private String name;
@Value("${person.addr}")
private String addr;
@RequestMapping("/quick2")
@ResponseBody
public String quick2(){
//获得配置文件的 信息
return "name:"+name+" addr:"+addr;
}
}
- @ConfigurationProperties注解,放到类前,需要写getter和setter方法
@Controller
@ConfigurationProperties(prefix = "person")
public class Quick3Controller {
//需要提供getset方法
private String name;
private String addr; @RequestMapping("/quick3")
@ResponseBody
public String quick2(){
//获得配置文件的 信息
return "name:"+name+" addr:"+addr;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
}
- configuration-processor执行器,在yml文件中更快得到Bean的属性名
<!--@ConfigurationProperties的执行器的配置-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
Controller
@Controller
@ConfigurationProperties(prefix = "person")
public class Quick3Controller {
//需要提供getset方法
private String name;
private String addr;
private Integer age;
@RequestMapping("/quick3")
@ResponseBody
public String quick2(){
//获得配置文件的 信息
return "name:"+name+" addr:"+addr+" age:"+age;
}
public String getName() {
return name;
}
配置好后,只需要在yml中使用Alt+/快捷键,即可得到Bean的属性
五、与其他框架的集成
1、集成Mybatis


# 配置mybatis的信息
# 别名配置
#spring集成Mybatis环境
# pojo别名扫描包
mybatis.type-aliases-package=com.itheima.domain
#加载Mybatis映射文件
mybatis.mapper-locations=classpath:mapper/*Mapper.xml
@Controller
public class MybatisController {
@Autowired
private UserMapper userMapper;
@RequestMapping("/query")
@ResponseBody
public List<User> queryUserList(){
List<com.itheima.domain.User> users = userMapper.queryUserList();
return users;
}
}
2、集成Junit

<!--SpringBoot集成Junit测试的起步依赖,IDEA中已经默认导入了-->
<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);
}
}
3、集成SpringDataJPA

<!--导入起步依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<!--添加数据库驱动依赖-->
<!-- MySQL连接驱动 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<!--jdk9需要导入如下坐标-->
<dependency>
<groupId>javax.xml.bind</groupId>
<artifactId>jaxb-api</artifactId>
<version>2.3.0</version>
</dependency>
@RunWith(SpringRunner.class)
@SpringBootTest(classes = SpringbootJpaApplicationTests.class)
public class JpaTest {
@Autowired
private UserRepository userRepository;
@Test
public void test(){
List<User> all = userRepository.findAll();
System.out.println(all);
}
}
4、集成Redis

Spring Boot回顾的更多相关文章
- 回顾maven项目的spring boot相关知识点
2021新年快乐! 在参加完研究生考试后,感觉像是放下了一个大负担,但并不能就此以为什么都结束了.反而,当我今天去看了一下之前老师带领我们班级做的一个maven项目,感觉像是第一次看到这个,十分陌生. ...
- 精益求精!Spring Boot 知识点全面回顾,带你重新细读源码!
约定优于配置 Build Anything with Spring Boot:Spring Boot is the starting point for building all Spring-bas ...
- 我的第一个spring boot程序(spring boot 学习笔记之二)
第一个spring boot程序 写在前面:鉴于spring注解以及springMVC的配置有大量细节和知识点,在学习理解之后,我们将直接进入spring boot的学习,在后续学习中用到注解及其他相 ...
- Https系列之二:https的SSL证书在服务器端的部署,基于tomcat,spring boot
Https系列会在下面几篇文章中分别作介绍: 一:https的简单介绍及SSL证书的生成二:https的SSL证书在服务器端的部署,基于tomcat,spring boot三:让服务器同时支持http ...
- Spring Boot Starter 介绍
http://www.baeldung.com/spring-boot-starters 作者:baeldung 译者:http://oopsguy.com 1.概述 依赖管理是任何复杂项目的关键部分 ...
- Spring Boot 2.0(二):Spring Boot 2.0尝鲜-动态 Banner
Spring Boot 2.0 提供了很多新特性,其中就有一个小彩蛋:动态 Banner,今天我们就先拿这个来尝尝鲜. 配置依赖 使用 Spring Boot 2.0 首先需要将项目依赖包替换为刚刚发 ...
- Java 小记 — Spring Boot 注解
前言 本篇随笔将对 Spring Boot 中的常用注解做一个简单的整理归档,写作顺序将从启动类开始并逐步向内外扩展,目的即为了分享也为了方便自己日后的回顾与查阅. 1. Application 启动 ...
- Spring Boot应用的后台运行配置
酱油一篇,整理一下关于Spring Boot后台运行的一些配置方式.在介绍后台运行配置之前,我们先回顾一下Spring Boot应用的几种运行方式: 运行Spring Boot的应用主类 使用Mave ...
- 《深入实践Spring Boot》阅读笔记之三:核心技术源代码分析
刚关注的朋友,可以回顾前两篇文章: 基础应用开发 分布式应用开发 上篇文章总结了<深入实践Spring Boot>的第二部分,本篇文章总结第三部分,也是最后一部分.这部分主要讲解核心技术的 ...
- Spring Boot【快速入门】
Spring Boot 概述 Build Anything with Spring Boot:Spring Boot is the starting point for building all Sp ...
随机推荐
- WPF 的内部世界(控件与布局)
目录 一.控件与布局 前言 为什么要写WPF呢? 我一开始算是比较抵触WPF的,因为用的人少吗.感觉都是窗体应用能和Winform有什么区别.可是我错了,非常感谢我的讲师,给我推荐刘铁猛的<深入 ...
- CentOS 7 安全基线检查
注意:操作时建议做好记录或备份 1.设置密码失效时间 | 身份鉴别 描述: 设置密码失效时间,强制定期修改密码,减少密码被泄漏和猜测风险,使用非密码登陆方式(如密钥对)请忽略此项. 加固建议: 使用非 ...
- 不允许还有Java程序员不了解BlockingQueue阻塞队列的实现原理
我们平时开发中好像很少使用到BlockingQueue(阻塞队列),比如我们想要存储一组数据的时候会使用ArrayList,想要存储键值对数据会使用HashMap,在什么场景下需要用到Blocking ...
- Ubuntu 环境下安装 Docker
系统要求 Docker目前只能运行在64位平台上,并且要求内核版本不低于3.10,实际上内核越新越好,过低的内核版本容易造成功能不稳定. 用户可以通过如下命令检查自己的内核版本详细信息: $ unam ...
- js中通过正则表达式验证邮箱是否合法
文章目录 1.效果展示 2.问题描述 3.代码实现 1.效果展示 2.问题描述 当用户在输入框输入邮箱后.点击验证邮箱按钮.系统给出提示信息. 3.代码实现 <!DOCTYPE html> ...
- 齐博x1更新了 提供一个部分用户期待已久的功能,修改主题后变为待审
如下图所示,你可以设置哪些用户组修改主题后,就会把原来已审核通过的主题,变为未审核.适合所有频道.
- MRR和Hits@n
使用 MRR/Hits@n 评估链路预测 平均倒数秩(Mean reciprocal rank,MRR) MRR是一种衡量搜索质量的方法.我们取一个未被破坏的节点,找到距离定义为相似性分数的" ...
- OCI runtime create failed: container_linux.go:349: starting container process caused "exec: "bash": executable file not found in $PATH": unknown
docker save docker save centos:self -o centos.tar 导出镜像到文件 用于持久化镜像,导出的tar包需要用 docker load -i imagedat ...
- MySQL的下载、安装、配置
下载 官方下载地址:下载地址: 找到免费社区版本 进入到下面页面的时候,下载对应的MySQL,我这里选择Windows. 点击Download ,如下图: 后面他会提示你登录注册啥的,我们选择不需要, ...
- 16.python中的回收机制
python中的垃圾回收机制是以引用计数器为主,标记清除和分代回收为辅的 + 缓存机制 1.引用计数器 在python内部维护了一个名为refchain的环状双向链表,在python中创建的任何对象都 ...