一、概述

1、Spring的优缺点

  • 优点

    • 无需开发ELB,通过IOC和AOP,就可以使用POJO(简单的Java对象)实现ELB的功能
  • 缺点:
    • 依赖管理导入Maven耗时耗力
    • 注解繁琐

2、SpringBoot的特点

  • 入门简单,无需配置
  • 提供非功能特性(嵌入式服务器)

二、快速入门

1、环境搭建

  • 继承起步依赖
  • 添加web的起步依赖
  1. <parent>
  2. <groupId>org.springframework.boot</groupId>
  3. <artifactId>spring-boot-starter-parent</artifactId>
  4. <version>2.0.1.RELEASE</version>
  5. </parent>
  6. <groupId>com.itheima</groupId>
  7. <artifactId>SpringBoot_QuickStart</artifactId>
  8. <version>1.0-SNAPSHOT</version>
  9. <dependencies>
  10. <dependency>
  11. <groupId>org.springframework.boot</groupId>
  12. <artifactId>spring-boot-starter-web</artifactId>
  13. </dependency>
  14. </dependencies>
  • 编写引导类
  1. package com.itheima;
  2. @SpringBootApplication
  3. public class MySpringBootApplication {
  4. public static void main(String[] args) {
  5. SpringApplication.run(MySpringBootApplication.class);
  6. }
  7. }
  • 编写Controller
  1. package com.itheima.controller;
  2. import org.springframework.stereotype.Controller;
  3. import org.springframework.web.bind.annotation.RequestMapping;
  4. import org.springframework.web.bind.annotation.ResponseBody;
  5. @Controller
  6. public class QuickController {
  7. @RequestMapping("/quick")
  8. @ResponseBody
  9. public String quick(){
  10. return "hello Spring Boot";
  11. }
  12. }

2、细节

  • @SpringBootApplication是引导类,run方法中运行引导类名,通常情况下引导类就是main方法所在的类
  • 热部署:修改Controller源码时,不再需要重启项目即可自动加载

    • 添加坐标
  1. <!--热部署配置-->
  2. <dependency>
  3. <groupId>org.springframework.boot</groupId>
  4. <artifactId>spring-boot-devtools</artifactId>
  5. </dependency>
    • 修改设置,Build,Compiler,勾选Build project automatically
    • Ctrl+Shift+Alt+/,选择Registry,勾选app.running  

3、IDEA创建SpringBoot工程

  • Spring Initializer
  • 添加Module时选中Web
  • 编写Controller
  1. package com.itheima.controller;
  2. @RestController
  3. //将controller和responsebody放在一起,不再需要写responsebody
  4. public class QuickController {
  5. @RequestMapping("/quick2")
  6. public String quick(){
  7. return "SpringBoot!!!";
  8. }
  9. } 

三、原理分析

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
  • 普通数据和对象数据的配置
  1. # 普通数据的配置
  2. name: zhangsan
  3.  
  4. # 对象的配置
  5. # 通过缩进
  6. #person:
  7. # name: zhangsan
  8. # age: 18
  9. # addr: beijing
  10.  
  11. server:
  12. port: 8083
  13.  
  14. # 行内对象配置(用的少)
  15. person: {name: zhangsan,age: 18,addr: beijing}
  • 集合的配置
  1. # 配置数组、集合(普通字符串)
  2. city:
  3. - beijing
  4. - tianjin
  5. - chongqing
  6. - shanghai
  7. - jinan
  8. # 行内方式
  9. #city: [beijing,jinan,hefei,nanjing]
  10.  
  11. # 数组、集合中存放对象数据
  12. student:
  13. - name: tom
  14. age: 18
  15. addr: hefei
  16. - name: xiaoming
  17. age: 17
  18. addr: tianjin
  19.  
  20. # 行内方式
  21. # student: [{name: tom,age: 18,addr: nanjing},{name: xiaoming,age: 18,addr: tianjin}]
  22.  
  23. # map配置
  24. map:
  25. key1: value1
  26. key2: value2

3、数据映射

  • @Value注解:将配置文件的值映射到Bean属性上
  1. @Controller
  2. public class Quick2Controller {
  3. @Value("${name}")
  4. private String name;
  5. @Value("${person.addr}")
  6. private String addr;
  7. @RequestMapping("/quick2")
  8. @ResponseBody
  9. public String quick2(){
  10. //获得配置文件的 信息
  11. return "name:"+name+" addr:"+addr;
  12. }
  13. } 
  • @ConfigurationProperties注解,放到类前,需要写getter和setter方法
  1. @Controller
  2. @ConfigurationProperties(prefix = "person")
  3. public class Quick3Controller {
  4. //需要提供getset方法
  5. private String name;
  6. private String addr;
  7.  
  8. @RequestMapping("/quick3")
  9. @ResponseBody
  10. public String quick2(){
  11. //获得配置文件的 信息
  12. return "name:"+name+" addr:"+addr;
  13. }
  14.  
  15. public String getName() {
  16. return name;
  17. }
  18.  
  19. public void setName(String name) {
  20. this.name = name;
  21. }
  • configuration-processor执行器,在yml文件中更快得到Bean的属性名
  1. <!--@ConfigurationProperties的执行器的配置-->
  2. <dependency>
  3. <groupId>org.springframework.boot</groupId>
  4. <artifactId>spring-boot-configuration-processor</artifactId>
  5. <optional>true</optional>
  6. </dependency>

Controller

  1. @Controller
  2. @ConfigurationProperties(prefix = "person")
  3. public class Quick3Controller {
  4. //需要提供getset方法
  5. private String name;
  6. private String addr;
  7. private Integer age;
  8. @RequestMapping("/quick3")
  9. @ResponseBody
  10. public String quick2(){
  11. //获得配置文件的 信息
  12. return "name:"+name+" addr:"+addr+" age:"+age;
  13. }
  14. public String getName() {
  15. return name;
  16. }

配置好后,只需要在yml中使用Alt+/快捷键,即可得到Bean的属性

五、与其他框架的集成

1、集成Mybatis

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

2、集成Junit

  1.     <!--SpringBoot集成Junit测试的起步依赖,IDEA中已经默认导入了-->
  2. <dependency>
  3. <groupId>org.springframework.boot</groupId>
  4. <artifactId>spring-boot-starter-test</artifactId>
  5. <scope>test</scope>
  6. </dependency>
  1. @RunWith(SpringRunner.class)
  2. @SpringBootTest(classes = SpringbootMybatisApplication.class)
  3. public class MybatisTest {
  4.  
  5. @Autowired
  6. private UserMapper userMapper;
  7. @Test
  8. public void test(){
  9. List<User> users = userMapper.queryUserList();
  10. System.out.println(users);
  11. }
  12. }

3、集成SpringDataJPA

  1. <!--导入起步依赖-->
  2. <dependency>
  3. <groupId>org.springframework.boot</groupId>
  4. <artifactId>spring-boot-starter-data-jpa</artifactId>
  5. </dependency>
  6. <!--添加数据库驱动依赖-->
  7. <!-- MySQL连接驱动 -->
  8. <dependency>
  9. <groupId>mysql</groupId>
  10. <artifactId>mysql-connector-java</artifactId>
  11. </dependency>
  12. <!--jdk9需要导入如下坐标-->
  13. <dependency>
  14. <groupId>javax.xml.bind</groupId>
  15. <artifactId>jaxb-api</artifactId>
  16. <version>2.3.0</version>
  17. </dependency>
  1. @RunWith(SpringRunner.class)
  2. @SpringBootTest(classes = SpringbootJpaApplicationTests.class)
  3. public class JpaTest {
  4. @Autowired
  5. private UserRepository userRepository;
  6. @Test
  7. public void test(){
  8. List<User> all = userRepository.findAll();
  9. System.out.println(all);
  10. }
  11. }

4、集成Redis

Spring Boot回顾的更多相关文章

  1. 回顾maven项目的spring boot相关知识点

    2021新年快乐! 在参加完研究生考试后,感觉像是放下了一个大负担,但并不能就此以为什么都结束了.反而,当我今天去看了一下之前老师带领我们班级做的一个maven项目,感觉像是第一次看到这个,十分陌生. ...

  2. 精益求精!Spring Boot 知识点全面回顾,带你重新细读源码!

    约定优于配置 Build Anything with Spring Boot:Spring Boot is the starting point for building all Spring-bas ...

  3. 我的第一个spring boot程序(spring boot 学习笔记之二)

    第一个spring boot程序 写在前面:鉴于spring注解以及springMVC的配置有大量细节和知识点,在学习理解之后,我们将直接进入spring boot的学习,在后续学习中用到注解及其他相 ...

  4. Https系列之二:https的SSL证书在服务器端的部署,基于tomcat,spring boot

    Https系列会在下面几篇文章中分别作介绍: 一:https的简单介绍及SSL证书的生成二:https的SSL证书在服务器端的部署,基于tomcat,spring boot三:让服务器同时支持http ...

  5. Spring Boot Starter 介绍

    http://www.baeldung.com/spring-boot-starters 作者:baeldung 译者:http://oopsguy.com 1.概述 依赖管理是任何复杂项目的关键部分 ...

  6. Spring Boot 2.0(二):Spring Boot 2.0尝鲜-动态 Banner

    Spring Boot 2.0 提供了很多新特性,其中就有一个小彩蛋:动态 Banner,今天我们就先拿这个来尝尝鲜. 配置依赖 使用 Spring Boot 2.0 首先需要将项目依赖包替换为刚刚发 ...

  7. Java 小记 — Spring Boot 注解

    前言 本篇随笔将对 Spring Boot 中的常用注解做一个简单的整理归档,写作顺序将从启动类开始并逐步向内外扩展,目的即为了分享也为了方便自己日后的回顾与查阅. 1. Application 启动 ...

  8. Spring Boot应用的后台运行配置

    酱油一篇,整理一下关于Spring Boot后台运行的一些配置方式.在介绍后台运行配置之前,我们先回顾一下Spring Boot应用的几种运行方式: 运行Spring Boot的应用主类 使用Mave ...

  9. 《深入实践Spring Boot》阅读笔记之三:核心技术源代码分析

    刚关注的朋友,可以回顾前两篇文章: 基础应用开发 分布式应用开发 上篇文章总结了<深入实践Spring Boot>的第二部分,本篇文章总结第三部分,也是最后一部分.这部分主要讲解核心技术的 ...

  10. Spring Boot【快速入门】

    Spring Boot 概述 Build Anything with Spring Boot:Spring Boot is the starting point for building all Sp ...

随机推荐

  1. UEC++ 代理/委托

    代理: 代理可以帮助我们解决一对一或是一对多的任务分配工作.主要可以帮助我们解决通知问题.我们可以通过代理完成调用某一个对象的一个函数,而不直接持有该对象的任何指针. 代理就是为你跑腿送信的,你可以不 ...

  2. Solutions:Elastic SIEM - 适用于家庭和企业的安全防护 ( 四)

  3. MongoDB 单实例节点主机的用户和权限一般操作步骤

    步骤总结: 1.先正常启动 2.创建用户,创建数据库病授权用户 3.关闭程序,开启安全,然后启动 4.使用账号和密码连接 按未开启认证的方式(配置文件中没开启安全选项并且启动命令中不添加 --auth ...

  4. 基于python的RSA解密算法

    摘要 网上有很多关于RSA的解密脚本,欧拉函数.欧几里得函数什么的,对于一个大专生的我来说,一窍不通,至此经历了三天三夜,我翻阅了RSA的加密原理,以及其底层算法,专研出了一套我自己的解密算法,尚有不 ...

  5. TCP和UDP有啥区别?

    TCP全称: Transmission Control Protocol中文名: 传输控制协议解释: 是一种面向连接的.可靠的.基于字节流的传输层通信协议,由IETF的RFC 793定义.用途:TCP ...

  6. PAT (Basic Level) Practice 1024 科学计数法 分数 20

    科学计数法是科学家用来表示很大或很小的数字的一种方便的方法,其满足正则表达式 [+-][1-9].[0-9]+E[+-][0-9]+,即数字的整数部分只有 1 位,小数部分至少有 1 位,该数字及其指 ...

  7. Spring_Boot项目集成Swagger填坑

    事情是这样的: 最近疫情在家里闲的无聊 看了看Swagger-2 在练习的过程出现了错误 写个帖子 希望跟我有同样问题的朋友可以避雷. 下面进入正题: 编辑 我使用的swagger-2版本是2.9.4 ...

  8. 结构体struct知识

    2022-10-12 08:52:03 //    结构体知识#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>#include<m ...

  9. 20220729 - DP训练 #2

    20220729 - DP训练 #2 时间记录 \(8:00-8:10\) 浏览题面 \(8:10-8:50\) T1 看题想到了建树,从每一个点遍历,若能遍历每一个点,则可以获胜 快速写完之后,发现 ...

  10. 【一】ERNIE:飞桨开源开发套件,入门学习,看看行业顶尖持续学习语义理解框架,如何取得世界多个实战的SOTA效果?

    ​ 参考文章: 深度剖析知识增强语义表示模型--ERNIE_财神Childe的博客-CSDN博客_ernie模型 ERNIE_ERNIE开源开发套件_飞桨 https://github.com/Pad ...