首页 > 其他分享 >SpringBoot(一) - SpringBoot 初识

SpringBoot(一) - SpringBoot 初识

时间:2022-10-10 17:15:58浏览次数:78  
标签:SpringBoot spring boot jar 初识 自动 注解

1、创建SpringBoot项目

1.1 使用Spring Initializr 的 Web页面创建项目

创建网址:https://start.spring.io/

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,spring,boot,jar,初识,自动,注解
From: https://www.cnblogs.com/xiaoqigui/p/16776040.html

相关文章

  • SpringBoot配置文件的优先级
    配置文件优先级(1)命令行参数;(2)java:comp/env的JNDI属性(当前J2EE应用的环境);(3)JAVA系统的环境属性;(4)操作系统的环境变量;(5)JAR包外部的application-xxx.properties或applica......
  • 初识内存中的数据——由浅入深理解程序的底层实现原理(一)
    引言:要想成为一名合格的开发者,掌握计算机系统工作原理是必须的,而在学这些之前应具有一门编程语言(汇编最好)的基础和一些计算机底层基础。本篇,我将从零开始一步步地探究高级......
  • 初识Linux(一)------什么是Linux?
    前言最近遇到的项目需要在Linux上进行开发测试,作为萌新宝宝的我是一点不懂,还以为和Windows操作差不多,结果在Linux上屡屡四处碰壁,举步维艰。无奈只能祭出我本科大一就......
  • SpringBoot Thymeleaf
    在SpringBoot【SSM+JSP篇】中使用了JSP来作为视图,需要我们自己将项目打成war包,并且部署到Tomcat上,随后项目才可以访问,觉得这有点麻烦,对于SpringBoot这个微服务框架来说,如果......
  • springboot注解大全
    1.@ConfigurationProperties与@EnableConfigurationProperties对比与区别  ......
  • SpringBoot+MyBatis Plus对Map中Date格式转换的处理
    在SpringBoot项目中,如何统一JSON格式化中的日期格式问题现在的关系型数据库例如PostgreSQL/MySQL,都已经对JSON类型提供相当丰富的功能,项目中对于不需要检索......
  • SpringBoot 整合邮件发送
    邮件发送更多参考:https://mrbird.cc/Spring-Boot-Email.html引入依赖在SpringBoot中发送邮件,需要用到spring-boot-starter-mail,引入spring-boot-starter-mail:<depend......
  • Java开发学习(三十七)----SpringBoot多环境配置及配置文件分类
    一、多环境配置在工作中,对于开发环境、测试环境、生产环境的配置肯定都不相同,比如我们开发阶段会在自己的电脑上安装mysql,连接自己电脑上的mysql即可,但是项目开发完毕......
  • springboot整合mybatisPlus
    引入场景启动器              ......
  • Springboot日志记录方案
    目录​​一、概述​​​​二、市面上的日志框架以及日志抽象层类​​​​三、slf4j+Logback​​​​第一种:简单配置​​​​第二种:通过logback专有的xml配置文件详细配置​......