SpringBoot(一) - SpringBoot 初识
1、创建SpringBoot项目
1.1 使用Spring Initializr 的 Web页面创建项目
1.2 使用IDEA创建
省略;
2、第一个hello
2.1 代码
在 xxxApplication(项目名+Application 自动生成) 的启动类的同级下创建一个controller包,并创建一个控制类
@Controller
public class SpringBootPrimerController {
/**
* @author : huayu
* @date : 10/10/2022
* @param : [msg]
* @return : java.lang.String
* @description : 接收前端请求helloSbt,返回响应字符串
*/
@RequestMapping("/helloSbt")
@ResponseBody
public String hello(@RequestParam(value = "msg") String msg){
return String.format("Hello %s",msg);
}
}
application.properties 指定服务端口
# 服务端口
server.port=8080 # 默认时8080
2.2 测试

2.3 新增的注解
@RestController //组合注解,相当于 @Controller + @ResponseBody
@GetMapping("/helloSbt")//相当于 @RequestMapping( method = {RequestMethod.GET} )
3、打 jar 包运行
3.1 打包
3.1.1 pom.xml
<!-- 指定打包方式,默认方式是jar,还可以是war -->
<packaging>jar</packaging>
3.1.2 点击 maven 的 package

3.2 运行jar 包
cmd 到 项目jar包的目录下
java -jar 项目的 jar包
运行结果

3.3 jar 包运行时 指定 参数
3.3.1 java -jar 项目jar包名 --key=value

3.3.2 java -jar -Dkey=value 项目jar包名

4、启动器
<!-- starter 启动器:SpringBoot 框架将各个场景单独抽离出来,做成一个个启动器 -->
<!-- 一旦项目中添加了对应的启动器,自动将对应启动器中多有的依赖导入到项目中,直接进行添加配置开发即可,无需手动添加依赖 -->
<!-- 实际开发中,使用什么功能,就直接添加对应的启动器 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
5、版本控制器 版本仲裁中心:spring-boot-dependencies
5.1 版本控制器
<!-- 为什么SpringBoot 项目添加依赖有的不需要指定版本(比如fastjson,添加必须指定版本号) -->
<!-- 原因:SpringBoot 框架提供了一个版本控制器(又叫:版本仲裁中心:spring-boot-dependencies) 定义了Springboot的依赖版本 -->
<!-- 好处:开发人员添加依赖不需要知道版本号,且不需要自己单独维护项目中的各个版本依赖,有防止版本之间的冲突 -->
5.2 找到版本控制器
1、点击 pom.xml中的启动器依赖

2.点击 spring-boot-starter-web 中的依赖 spring-boot-starters

3.点击 spring-boot-starters 中的依赖 spring-boot-parent

4.点击 spring-boot-parent 中的依赖 spring-boot-dependencies

5、在 spring-boot-dependencies 中可以看到 springboot对一些依赖的版本进行了版本控制,和冲突处理

6、SpringBoot应用的maven 插件
<!--
SpringBoot应用的maven 插件,可以将当前SpringBoot 项目直接打包成一个可以执行的jar包,区别与普通jar包(里面没有源码),不能被依赖(比如fastjson依赖jar等)
即:可以直接通过java -jar 项目指定jar包 命令快速启动项目
-->
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
7、SpringBootApplication 注解详情
此注解,就是SpringBoot应用的核心启动类;

7.1 @SpringBootConfiguration 注解
标注的类就是SpringBoot的核心配置类,是SpringBoot的专属注解,实际上跟 @Configuration 注解一致(等同于以前的核心配置文件),在SpringBoot应用启动时,会自动加载;

@SpringBootConfiguration 实际上跟 @Configuration 注解一致;

7.2 @EnableAutoConfiguration 注解
开启自动配置注解,以前都是手动创建xml核心配置文件,文件中增加核心配置,现在都交给SpringBoot框架自动配置;

7.2.1 子注解 1 @AutoConfigurationPackage 子注解
- 开启自动配置包,实际上就是开启spring的自动扫描功能;

7.2.1.1 子注解 1 的子注解 @Import(AutoConfigurationPackages.Registrar.class)
@Import(AutoConfigurationPackages.Registrar.class)将springBoot核心启动类所在的父包及子包中所有的组件,自动添加到容器中

- 找到 springBoot核心启动类所在的父包 加载的位置
1、点击进入 @Import(AutoConfigurationPackages.Registrar.class)

2、点击 Evalute Expression

3、执行Evalute
可以看出是将springBoot核心启动类所在的父包及子包中所有的组件,自动添加到容器中


7.2.2 子注解 2 @Import({EnableAutoConfigurationImportSelector.class})
- 开启自动配置将springboot框架下MET-INF/spring/spring.factories资源文件中,属性值 org.springframework.boot.autoconfigure.EnableAutoConfiguration 指定的96个自动配置类,导入到容器中,实现自动配置,省去开发人员手动添加组件到容器中,减少开发的工作量,重心都放在核心业务开发中,不是配置上;

- 96个自动配置类
1、进入 @Import(EnableAutoConfigurationImportSelector.class)

2、再进入 AutoConfigurationImportSelector

3、跳到 getCandidateConfigurations 方法
可以看到96个configuration 应该在 META-INF/spring.factories中

4、我找到 META-INF/spring.factories

5、在 spring.factories 找到 96个 configuration

7.2.3 子注解 3 @ComponentScan 注解
- 指定组件扫描,相当于spring核心配置xml文件中<context:component-scan></context:component-scan> 作用;
- 可以指定一个自定义的包路径(或者多个),执行组件扫描;
- 注意:如果核心启动类上,增加此注解,会导致默认的自动配置包失败,以指定的为准,实际应用时,要避免此种情况出现;

8、banner
在 resources 下 创建文件 banner.txt ,网上复制图案;
banner图网址:https://www.bootschool.net/ascii
SpringBoot(一) - SpringBoot 初识的更多相关文章
- springboot情操陶冶-初识springboot
前言:springboot由于其轻便和去配置化等的特性已经被广泛应用,基于时代潮流以及不被鄙视,笔者于是开辟此篇开始认识springboot 前话 springboot是基于spring而开发的轻量级 ...
- 【SpringBoot】SpringBoot 入门示例
参考资料: http://www.tuicool.com/articles/mqeee2A http://www.cnblogs.com/suncj/p/4065589.html http://spr ...
- springBoot系列-->springBoot注解大全
一.注解(annotations)列表 @SpringBootApplication:包含了@ComponentScan.@Configuration和@EnableAutoConfiguration ...
- [SpringBoot] - 了解什么是SpringBoot,使用SpringBoot的配置文件
首先明白Spring是什么,Spring是Java开发的一个框架,为了方便简化Java开发. 什么是注解(注解式开发)? Spring的常用注解有哪些? 假如用SpringBoot构建一个网站程序,应 ...
- Springboot】Springboot整合邮件服务(HTML/附件/模板-QQ、网易)
介绍 邮件服务是常用的服务之一,作用很多,对外可以给用户发送活动.营销广告等:对内可以发送系统监控报告与告警. 本文将介绍Springboot如何整合邮件服务,并给出不同邮件服务商的整合配置. 如图所 ...
- 【SpringBoot】SpringBoot 国际化(七)
本周介绍SpringBoot项目的国际化是如何处理的,阅读本章前请阅读[SpringBoot]SpringBoot与Thymeleaf模版(六)的相关内容 国际化原理 1.在Spring中有国际化Lo ...
- 【SpringBoot】SpringBoot与SpringMVC自动配置(五)
本文介绍SpringBoot对Spring MVC自动配置,SpringBoot自动配置原理可以参考:[SpringBoot]SpringBoot配置与单元测试(二) 首先新建一个SpringBoot ...
- 【SpringBoot】SpringBoot配置与单元测试(二)
SpringBoot项目创建参考[SpringBoot]SpringBoot快速入门(一) 本文介绍SpringBoot项目的POM文件.配置与单元测试 POM文件 1.SpringBoot的pom文 ...
- SpringBoot(四) -- SpringBoot与Web开发
一.发开前准备 1.创建一个SpringBoot应用,引入我们需要的模块 2.SpringBoot已经默认将这些场景配置好了,只需要在配置文件中指定少量配置,就能运行起来 3.编写业务代码 二.静态资 ...
- 【SpringBoot】SpringBoot Web开发(八)
本周介绍SpringBoot项目Web开发的项目内容,及常用的CRUD操作,阅读本章前请阅读[SpringBoot]SpringBoot与Thymeleaf模版(六)的相关内容 Web开发 项目搭建 ...
随机推荐
- list集合的介绍和常用方法
List接口介绍 java.util.List接口继承自Collection接口,是单列集合的一个重要分支,习惯性地会将实现了List接口的对象成为List集合.在List集合中允许出现重复的元素,所 ...
- Serverless之Knative部署应用实例;
1.什么是Knative? Knative是Google2018的Google Cloud Next大会上发布的一款基于kubernetes的Serverless框架. knative的目的是在kub ...
- Python-基础学习-第二轮
目录 数据类型 文件 自调用其他程序 os.system函数 os.startfile 函数 subprocess 模块 线程和进程 创建新线程 共享数据的访问控制 deamon线程 多线程 JSON ...
- B端产品需求分析与优先级判断
需求分析是产品经理工作中的重要一部分,而对B端产品经理来说,因为业务的特殊性,所以需求分析更考验产品经理的基础能力比如还原场景中业务调研的能力.需求价值分析中对价值的界定等. B端厂商的产品需求多数来 ...
- JVM 配置参数 -D,-X,-XX 的区别
转载请注明出处: 最近在安全护网行动,需要针对服务进行不断的安全加固,如 对服务的 log4j 的安全配置进行防护,对 fastjson 的漏洞进行安全加固等,最快的防护方法就是通过在服务启动的时候, ...
- 《吐血整理》进阶系列教程-拿捏Fiddler抓包教程(12)-Fiddler设置IOS手机抓包,你知多少???
1.简介 Fiddler不但能截获各种浏览器发出的 HTTP 请求,也可以截获各种智能手机发出的HTTP/ HTTPS 请求. Fiddler 能捕获Android 和 Windows Phone 等 ...
- Windows 11上Dev C++ 5.11 提示 Failed to execute xxx Error 0的一种解决方法
问题现象 在Windows 11上用Dev C++ 5.11编译运行程序,出现如下错误不能运行,且自己的程序没有问题. 可能的原因 Dev C++没有以管理员身份运行? 生成的程序所在的目录受到了访问 ...
- 一文搞懂│mysql 中的备份恢复、分区分表、主从复制、读写分离
目录 mysql 的备份和恢复 mysql 的分区分表 mysql 的主从复制读写分离 mysql 的备份和恢复 创建备份管理员 创建备份管理员,并授予管理员相应的权限 备份所需权限:select,r ...
- BI系统的分布式部署原理和技术实现
1.什么是分布式 关于"分布式系统"的定义,我们先看下书中是怎么说的.<分布式系统原理和范型>一书中是这样定义分布式系统的:"分布式系统是若干独立计算机的集合 ...
- linux中cd后自动 ls的设置
根据不同的shell设置不太一样.常见的有bash csh两种.可以用echo $SHELL来查询当前是哪一种. bash设置是在用户的home下打开.bashrc在里面加上如下: cd() { bu ...