首页 > 其他分享 >SpringBoot—01—简介;基本使用;

SpringBoot—01—简介;基本使用;

时间:2024-03-03 21:22:24浏览次数:12  
标签:01 SpringBoot 配置文件 Spring 简介 boot Boot spring starter


 

@RequestMapping
@Controller
@GetMapping
@ResponstBody(不走视图解析,直接返回数据)
@Component(是Controller和Service的父类,就是让sping创建一个bean)

@ConfigurationPerproties(prefix=xxx),从配置文件中读取配置赋值给实体类
@Autowire,自动装配,但是具体的还是没搞懂

@valiated,做数据校验的,在类上加了个这个注解,在成员变量上加@Email则表示这个变量的值必须符合email的格式;还可以加@length等数据格式校验注解;

 

一、SpringBoot简介

1 什么是 Spring Boot Spring Boot 是一个框架,一种全新的编程规范,他的产生简化了框架的使用,所谓简 化是指简化了 Spring 众多框架中所需的大量且繁琐的配置文件,所以 Spring Boot 是一个服 务于框架的框架,服务范围是简化配置文件。所以从本质上来说,Spring Boot 其实就是 Spring 框架的另一种表现形式。 2 Spring Boot 特征
  • 使用 Spring Boot 可以创建独立的 Spring 应用程序
  • 在Spring Boot中直接嵌入了Tomcat、Jetty、Undertow等Web容器,所以在使用SpringBoot
  • 做 Web 开发时不需要部署 WAR 文件
  • 通过提供自己的启动器(Starter)依赖,简化项目构建配置
  • 尽量的自动配置 Spring 和第三方库
  • 提供了生产就绪特征,如:度量指标,运行状况检查和外部化配置
  • 绝对没有代码生成,也不需要 XML 配置文件
3 Spring Boot 版本介绍
  • SNAPSHOT:快照版,即正在开发的版本。
  • CURRENT:最新版,但是不一定是稳定版。
  • GA:General Availability,正式发布的版本

 

二、创建基于 Spring Boot 的项目

 

 

三、Spring Boot 项目结构介绍

1。POM 文件

继承

Spring Boot 的父级依赖,只有继承它项目才是 Spring Boot 项目。 spring-boot-starter-parent 是一个特殊的 starter,它用来提供相关的 Maven 默认依赖。使用它之后,常用的包依赖可以省去 version 标签。

依赖

<dependency>
<groupId>org.springframework.boot<groupId>
<artifactId>spring-boot-starter-web<artifactId>
<dependency>
启动器依赖;有了一个启动器依赖(以web启动器为例),我们就不用在pom文件中再去添加springmvc的坐标依赖和jackon的坐标依赖了;导入jar包会更方便; 注意启动类是项目run起来的入口、启动器是坐标依赖。

插件

<build>
<plugins>
<plugin>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-maven-pluginartifactId>
<plugin>
<plugins>
<build>
spring-boot-maven-plugin 插件是将 springboot 的应用程序打包成 jar 包的插件。将所有应用启动运行所需要的 jar 包都包含进来,从逻辑上将具备了独立运行的条件。 当运行"mvnpackage"进行打包后,使用"java -jar"命令就可以直接运行。

2。启动类

Spring Boot 的启动类的作用是启动 Spring Boot 项目,是基于 Main 方法来运行的。 注意:启动类在启动时会做注解扫描(@Controller、@Service、@Repository......),扫描 位置为同包或者子包下的注解,所以启动类的位置应放于包的根下。

启动类与启动器区别:

  • 启动类表示项目的启动入口
  • 启动器表示 jar 包的坐标

创建启动类 

/**
*Spring Boot 启动类
*/
@SpringBootApplication
public class SpringBootDemo3Application {
public static void main(String[] args){
SpringApplication.run(SpringBootDemo3Application.class,ar
gs);
}
}

 

3。启动器

Spring Boot 将所有的功能场景都抽取出来,做成一个个的 starter(启动器),只需要在项 目里面引入这些 starter 相关场景的所有依赖都会导入进来,要用什么功能就导入什么场景, 在 jar 包管理上非常方便,最终实现一站式开发。 Spring Boot 提供了多达 44 个启动器。
  • spring-boot-starter;这是 Spring Boot 的核心启动器,包含了自动配置、日志和 YAML。
  • spring-boot-starter-actuator;帮助监控和管理应用。
  • spring-boot-starter-web;支持全栈式 Web 开发,包括 Tomcat 和 spring-webmvc。
  • spring-boot-starter-amqp;通过 spring-rabbit 来支持 AMQP 协议(Advanced Message Queuing Protocol)。
  • spring-boot-starter-aop;支持面向切面的编程即 AOP,包括 spring-aop 和 AspectJ。
  • spring-boot-starter-artemis;通过 Apache Artemis 支持 JMS 的 API(Java Message Service API)。
  • spring-boot-starter-batch;支持 Spring Batch,包括 HSQLDB 数据库。
  • spring-boot-starter-cache;支持 Spring 的 Cache 抽象。
  • spring-boot-starter-cloud-connectors;支持 Spring Cloud Connectors,简化了在像 Cloud Foundry 或 Heroku 这样的云平台上连接服务。
  • spring-boot-starter-data-elasticsearch;支持 ElasticSearch 搜索和分析引擎,包括 spring-data-elasticsearch。
  • spring-boot-starter-data-gemfire;支持 GemFire 分布式数据存储,包括 spring-data-gemfire。
  • spring-boot-starter-data-jpa支持 JPA(Java Persistence API),包括 spring-data-jpa、spring-orm、Hibernate。
  • spring-boot-starter-data-mongodb;支持 MongoDB 数据,包括 spring-data-mongodb。
  • spring-boot-starter-data-rest;通过 spring-data-rest-webmvc,支持通过 REST 暴露 Spring Data 数据仓库。
  • spring-boot-starter-data-solr;支持 Apache Solr 搜索平台,包括 spring-data-solr。
  • spring-boot-starter-freemarker;支持 FreeMarker 模板引擎。
  • spring-boot-starter-groovy-templates;支持 Groovy 模板引擎。
  • spring-boot-starter-hateoas;通过 spring-hateoas 支持基于 HATEOAS 的 RESTful Web 服务。
  • spring-boot-starter-hornetq;通过 HornetQ 支持 JMS。
  • spring-boot-starter-integration;支持通用的 spring-integration 模块。
  • spring-boot-starter-jdbc;支持 JDBC 数据库。
  • spring-boot-starter-jersey;支持 Jersey RESTful Web 服务框架。
  • spring-boot-starter-jta-atomikos;通过 Atomikos 支持 JTA 分布式事务处理。
  • spring-boot-starter-jta-bitronix;通过 Bitronix 支持 JTA 分布式事务处理。
  • spring-boot-starter-mail;支持 javax.mail 模块。
  • spring-boot-starter-mobile;支持 spring-mobile。spring-boot-starter-mustache;支持 Mustache 模板引擎。
  • spring-boot-starter-redis;支持 Redis 键值存储数据库,包括 spring-redis。
  • spring-boot-starter-security;支持 spring-security。
  • spring-boot-starter-social-facebook;支持 spring-social-facebook
  • spring-boot-starter-social-linkedin;支持 pring-social-linkedin
  • spring-boot-starter-social-twitter;支持 pring-social-twitter
  • spring-boot-starter-test;支持常规的测试依赖,包括 JUnit、Hamcrest、Mockito 以及 spring-test 模块。
  • spring-boot-starter-thymeleaf;支持 Thymeleaf 模板引擎,包括与 Spring 的集成。
  • spring-boot-starter-velocity;支持 Velocity 模板引擎。
  • spring-boot-starter-websocket;支持 WebSocket 开发。
  • spring-boot-starter-ws;支持 Spring Web Services。
  • spring-boot-starter-actuator;增加了面向产品上线相关的功能,比如测量和监控。
  • spring-boot-starter-remote-shell;增加了远程 ssh shell 的支持。
  • spring-boot-starter-jetty引入了 Jetty HTTP 引擎(用于替换 Tomcat)。
  • spring-boot-starter-log4j;支持 Log4J 日志框架。
  • spring-boot-starter-logging;引入了 Spring Boot 默认的日志框架 Logback。
  • spring-boot-starter-tomcat;引入了 Spring Boot 默认的 HTTP 引擎 Tomcat。
  • spring-boot-starter-undertow;引入了 Undertow HTTP 引擎(用于替换 Tomcat)。

 

4。配置文件 Spring Boot

提供一个名称为 application 的全局配置文件,支持两种格式 properteis 格式 与 YAML 格式。

4.1Properties 格式

配置 Tomcat 监听端口 server.port=8888

4.2YAML 格式

YAML 格式配置文件的扩展名可以是 yaml 或者 yml。 (1)基本格式要求:
  •  大小写敏感
  •  使用缩进代表层级关系
  •  相同的部分只出现一次
(2)配置 Tomcat 监听端口:   server:      port:         8888

4.3配置文件存放位置

  •  当前项目根目录中
  •  当前项目根目录下的一个/config 子目录中
  •  项目的 resources 即 classpath 根路径中
  •  项目的 resources 即 classpath 根路径下的/config 目录中

4.4配置文件加载顺序

4.4.1不同格式的加载顺序 如 果 同 一 个 目 录 下 , 有 application.yml 也 有 application.properties , 默 认 先 读 取 application.properties。 如果同一个配置属性,在多个配置文件都配置了,默认使用第 1 个读取到的,后面读取 的不覆盖前面读取到的。 4.4.2不同位置的加载顺序
  • 当前项目根目录下的一个/config 子目录中(最高) config/application.properties config/application.yml
  • 当前项目根目录中(其次) application.properties application.yml
  • 项目的 resources 即 classpath 根路径下的/config 目录中(一般) resources/config/application.properties resources/config/application.yml
  • 项目的 resources 即 classpath 根路径中(最后) resources/application.properties resources/application.yml

4.5配置文件中的占位符

4.5.1占位符语法 语法:${} 4.5.2占位符作用  "${}"中可以获取框架提供的方法中的值如:random.int 等。  占位符可以获取配置文件中的键的值赋给另一个键作为值。 4.5.3生成随机数 ${random.value} - 类似 uuid 的随机数, 没有"-"连接 ${random.int} - 随机取整型范围内的一个值 ${random.long} - 随机取长整型范围内的一个值 ${random.long(100,200)} - 随机生成长整型 100-200 范围内的一个值 ${random.uuid} - 生成一个 uuid, 有短杠连接 ${random.int(10)} - 随机生成一个 10 以内的数 ${random.int(100,200)} - 随机生成一个 100-200 范围以内的

4.6bootstrap 配置文件

4.6.1bootstrap 配置文件介绍 Spring Boot 中有两种上下文对象,一种是 bootstrap, 另外一种是 application,bootstrap 是应用程序的父上下文,也就是说 bootstrap 加载优先于 applicaton。 bootstrap 主要用于从 额外的资源来加载配置信息,还可以在本地外部配置文件中解密属性。这两个上下文共用一 个环境,它是任何 Spring 应用程序的外部属性的来源。bootstrap 里面的属性会优先加载, 它们默认也不能被本地相同配置覆盖。 4.6.2bootstrap 配置文件特征
  •  boostrap 由父 ApplicationContext 加载,比 applicaton 优先加载。
  •  boostrap 里面的属性不能被覆盖。
4.6.3bootstrap 与 application 的应用场景 application 配置文件主要用于 Spring Boot 项目的自动化配置。 bootstrap 配置文件有以下几个应用场景。
  •  使用 Spring Cloud Config 配置中心时,这时需要在 bootstrap 配置文件中添加连 接到配置中心的配置属性来加载外部配置中心的配置信息。
  •  一些固定的不能被覆盖的属性。
  •  一些加密/解密的场景。
   

5。SpringBoot的核心注解

  • 5.1@SpringBootApplication 是 SpringBoot 的启动类。 此注解等同于@Configuration+@EnableAutoConfiguration+@ComponentScan 的组合。
  • 5.2@SpringBootConfiguration  注解是@Configuration 注解的派生注解,跟@Configuration 注解的功能一致,标注这个类是一个配置类,只不过@SpringBootConfiguration 是 springboo的注解,而@Configuration 是 spring 的注解
  • 5.3@Configuration 通过对 bean 对象的操作替代 spring 中 xml 文件
  • 5.4@EnableAutoConfiguration Spring Boot 自动配置(auto-configuration):尝试根据你添加的 jar 依赖自动配置你的 Spring 应用。是@AutoConfigurationPackage 和@Import(AutoConfigurationImportSelector.class) 注解的组合。
  • 5.5@AutoConfigurationPackage @AutoConfigurationPackage 注解,自动注入主类下所在包下所有的加了注解的类 (@Controller,@Service 等),以及配置类(@Configuration) 5.6@Import({AutoConfigurationImportSelector.class}) 直接导入普通的类 导入实现了 ImportSelector 接口的类 导入实现了 ImportBeanDefinitionRegistrar 接口的类
  • 5.7@ComponentSca组件扫描,可自动发现和装配一些 Bean。
  • 5.8@ConfigurationPropertiesScan  扫描配置属性。   @EnableConfigurationProperties 注解的作 用是使用 @ConfigurationProperties 注解的类生效。
       

标签:01,SpringBoot,配置文件,Spring,简介,boot,Boot,spring,starter
From: https://www.cnblogs.com/EricShen/p/12053922.html

相关文章

  • [GWCTF 2019]pyre
    首先是简单的pyc-py这题唯一要注意的一个点就是遇到%务必进行爆破爆破exp`code=['\x1f','\x12','\x1d','(','0','4','\x01','\x06','\x14','4',',','\x1......
  • [极客大挑战 2019]BabySQL 1
    [极客大挑战2019]BabySQL1审题还是SQL注入和之前的是一个系列的。知识点联合注入,双写绕过解题输入万能密码发现回显中没有or,猜测是使用正则过滤了or。尝试双写绕过登录成功使用联合查询,本题中过滤了from,where,or,by,union,select。看到4没有注入点,2和3都......
  • P5322 [BJOI2019] 排兵布阵
    原题链接题解巧妙的背包问题我可以用按顺序遍历城堡,顺便表示出遍历到当前城堡时用掉了多少兵力,这样是可以穷尽所有兵力派送情况的同时把这个城堡里的敌方兵力升序排序,然后遍历,表示为了消灭所有兵力小于等于ta的敌人所加的分code#include<bits/stdc++.h>usingnamespacestd......
  • python接口自动化系列(01):自动化测试框架设计
     本系列汇总,请查看这里:https://www.cnblogs.com/uncleyong/p/18033074先看下最终效果(gif) 报告总览 前言之前分享了java自动化(详见:https://www.cnblogs.com/uncleyong/p/15867903.html),部分小伙伴建议分享一个python版本,安排!!!当然,通过测试招聘要求大家也可以发现,目前......
  • SpringBoot(二)
    ⅤⅠⅠspringboot原理1.autoconfig1.1Condition:选择性的创建bean注入一个Bean:@ConfigurationClass下@Bean方法返回一个User,就获得name="user"的Bean@Conditional(实现类.class)=>决定Spring是否创建这个Bean【需求1】导入Jedis坐标后创建Bean,否则失败Condition实......
  • nginx系列文章01---基础知识
    1.何为反向代理?在介绍反向代理之前,先来了解一下正向代理。正向代理:如果把局域网外的Internet想象成一个巨大的资源库,则局域网中的客户端要访问Internet,则需要通过代理服务器来访问,这种代理服务就称为正向代理,下面是正向代理的原理图。由于工作环境原因,日常工作只能局限于单位的......
  • TJ - 「ZJOI2011」道馆之战
    「ZJOI2011」道馆之战难度:2500\(1s,256MB\)一,题目:题目大意:给你一颗\(n\)个节点的树,每个节点有\(A,B\)两个区域,每个区域可以为障碍物/冰块,只能在冰块上行走,每次行走你可以走到相邻节点的同个区域,或当前节点的另一个区域(前提是这个区域可以走),现在有\(m\)个操作和询问,操作是修改......
  • P8598 [蓝桥杯 2013 省 AB] 错误票据 题解
    思路考虑将\(id\)从小到大排序,然后从\(2\)下标开始扫描一遍\(id\)数组,若当前的\(id_i-id_{i-1}>1\),则说明当前\(id\)存在断号,输出\(id_i-1\);若当前的\(id_i=id_{i-1}\),则说明当前\(id\)存在重号,输出\(id_i\)。注意断号与重号需要分开计算。#include<b......
  • Java学习Day01
    开发语言汇总开发语言鼻祖,汇编语言C语言,面向过程的开发C++,是C语言的延伸,覆盖面向对象Java面向对象的开发,又叫C++--C#是Java的山寨Java发展史C语言的纯净版,无指针、内存的管理等C语言的纯净版,有如下特性:简单易用面向对象可移植性高性能分布式多线程安全性健壮......
  • Day01---Web前端基础
    1,换行,分割和超链接换行命令:分隔线命令:超链接命令:超链接有两种常用用法:页面跳转,下载文件<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><title>Title</title></head><body><!--页面跳转:如果href的值是网......