# SpringBoot学习笔记(一)-SpringBoot基础学习
[TOC]
## SpringBoot概念
```html
Build Anything with Spring Boot?Spring Boot is the starting point for
building all Spring-based applications. Spring Boot is designed to get you up
and running as quickly as possible, with minimal upfront configuration of
Spring.
```
SpringBoot是所有基于Spring开发项目的起点,SpringBoot设计为了尽快的运行Spring应用程序并减少相应的配置文件.
SpringBoot的核心思想是**约定优于配置**,又称按约定编程,是一种软件设计范式
如果实体中有个名为User的类,数据库中对应的表就会默认命名为user。只有在偏离这一约定的时候,比如将该表命名为"user_admin"之类的,才需要进行配置
## SpringBoot如何解决Spring的配置问题?
**Spring配置问题**:
Spring的配置较为复杂,无论是使用XML配置还是注解配置都需要从应用程序思维切换到配置思维,可能会导致思路中断等.
并且项目上的依赖管理也很复杂,在环境搭建时,一旦选错了依赖的版本,会导致一系列意料外的事情出现,导致浪费过多的时间
**SpringBoot如何解决?**
- **自动配置**- SpringBoot的自动配置会自动将一些配置类的bean注册进IOC容器,可以在需要使用的地方直接用@Autowired或者@Resource注解进行使用,我们不需要手工注入这些配置bean,就可以直接进行使用,SpringBoot对主流框架都进行了无配置集成,极大的提高了开发与部署的效率
- **起步依赖**- 起步依赖将具有某种功能的坐标打包在一起,提供一些默认的功能,避免人为的导致版本依赖冲突等问题
## SpringBoot案例
实现一个Controller,并将"hello world"输出到浏览器中
### 使用spring initalizr构建初始化SpringBoot工程
**Spring官网初始化**:

因为使用SpringBoot的官网总是会连接失败,这里我们使用阿里云的国内镜像地址:https://start.aliyun.com/

点击next:



点击finish,等待项目与相应的maven库下载完成,这时候一个基础的SpringBoot程序就下载好了
SpringBoot的目录结构

这时候新增相应的Controller
```java
@RestController
public class SpringBootController {
@RequestMapping("/demo")
public String demo(){
return "hello world";
}
}
```
运行:

结果:

### SpringBoot中使用单元测试
在maven配置文件中添加测试依赖
```xml
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
```
注:使用spring initalizr会自动引入,无需手工重新引入`spring-boot-starter-test`
使用相应测试类:
```java
@SpringBootTest//标记为SpringBoot单元测试类,自动加载项目的上下文环境
class DemoApplicationTests {
@Autowired
private SpringBootController springBootController;
@Test
void contextLoads() {
System.out.println(springBootController.demo());
}
}
```
最终结果:

### SpringBoot中使用热部署
添加支持热部署的启动器
```xml
<!-- 引入热部署依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
</dependency>
```
在idea下进行热部署的支持配置

选择Build下面的Compiler选项,在右侧勾选"Build project automatically"选项,将项目裴志伟自动编译,或者修改完代码后,手工使用快捷键`ctrl+shift+F9`
在项目界面使用组合快捷键`ctrl+shift+alt+/`打开Maintenance选项,并将`compiler.automake.allow.when.app.running`进行勾选
SpringBoot学习笔记(一)-SpringBoot基础学习