当前位置: 首页 > news >正文

SpringBoot 的入门开发

目录

一、环境准备

二、构建spring项目

1、方式一:使用Spring Initializr的web 页面创建项目:

2、方式二:使用IDEA直接创建项目

3、方式三:使用idea创建项目

4、使用 IDEA 创建Maven项目并改造为springBoot项目

5、将项目打jar包

三、springboot核心配置

1、banner修改:

1、方式一:文本txt方式,

2、方式二

2、Spring Boot配置文件分类

1、yaml概述:(简洁,以数据为核心)

2、yaml 基础语法

3、yaml读取配置内容

1. 逐个注入:@Value (不支持复杂数据类型

2. 批量注入:1.@ConfigurationProperties 2.Environment类

3. 对比

4、 JSR303数据校验 (检查属性赋值是否符合规范)

 JSR303校验注解的使用步骤

1.添加依赖,导入spring-boot-starter-validation启动器

2.在实体类需要校验的成员字段(Field)上,添加校验注解。

3.在Controller控制器的校验参数前,使用@Valid注解开启校验,使用BindingResult 绑定校验结果

4、常用注解


一、环境准备

  • java Version :1.8
  • Maven:3.6以上
  • SpringBoot:2.X最新版

二、构建spring项目

1、方式一:使用Spring Initializr的web 页面创建项目:

1. 打开 https://start.spring.io/

2. 填写项目信息

3. 点击”Generate Project“按钮生成项目;下载此项目

4. 解压项目包,并用IDEA以Maven项目导入,一路下一步即可,直到项目导入完毕。

5. 如果是第一次使用,可能速度会比较慢,包比较多、需要耐心等待一切就绪。

2、方式二:使用IDEA直接创建项目

1、创建一个新项目

2、选择SpringBoot,可以看到默认就是去官网的快速构建工具那里实现

3、填写项目信息

4、选择未初始化的组件(初学勾选web)

5、填写项目路径

6、等待项目构建成功

7、配置MAVEN信息和更换jdk版本

3、方式三:使用idea创建项目

(与方式二相同,路径不同:https://start.aliyun.com)

4、使用 IDEA 创建Maven项目并改造为springBoot项目

1. 程序的主启动类

2. 一个 application.properties 配置文件

3. 一个 测试类

4. 一个 pom.xm

//pom 文件spring boot主坐标(依赖)
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency><dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>

5、将项目打jar包

1、点击package

2、可以通过cmd之既然运行jar包:Java -jar jar包名

三、springboot核心配置

1、banner修改:

1、方式一:文本txt方式,

  • 在resources 目录下新建一个banner.txt,
  • 图案可以到: https://www.bootschool.net/ascii 这个网站生成,然后拷贝到文件中即可,
  • 设置图片作为banner :在配置文件中添加

spring.banner.image.location=logo.png

2、方式二

  • 直接将图片移到resources目录下,改名为banner
  • 关闭其他banner设置
  • 直接启动项目

2、Spring Boot配置文件分类

SpringBoot是基于约定的,所以很多配置都有默认值,但如果想使用自己的配置替换默认配置的话,就可以使用 application.properties或者application.yml(application.yaml)进行配置

  • application.properties 语法结构 :key=value

server.port=8081

  • application.yml 语法结构 :key:空格 value (冒号后面必须要有空格)

server: port: 8081

1、yaml概述:(简洁,以数据为核心)

YAML全称是 YAML Ain't Markup Language 。YAML是一种直观的能够被电脑识别的的数据序列化格式, 并且容易被人类阅读,容易和脚本语言交互的,可以被支持YAML库的不同的编程语言程序导入,比如: C/C++, Ruby, Python, Java, Perl, C#, PHP等。YML文件是以数据为核心的,比传统的xml方式更加简洁。 YAML文件的扩展名可以使用.yml或者.yaml。

  • properties:

server.port=8080

server.address=127.0.0.1

  • xml:

<server>

<port>8080</port>

<address>127.0.01</address>

<server>

  • yml:

server: port: 8080

address: 127.0.0.1

2、yaml 基础语法

  • 1、大小写敏感
  • 2、数据值前必须要有空格,作为分隔符
  • 3、使用缩进表示层级关系
  • 4、缩进时不使用tab键,值允许使用空格()各个系统对应的Tab空格数可能不同,导致层次结构发生变化
  • 5、缩进的空格数目不重要,只要相同层级的元素左侧对其即可
  • 6、'#'表示注释,从这个字符一致到行尾,都会被解析器忽略
#################yml语法数据类型######################
######基本数据类型与string##########
boolean: true
float: 3.14
int: 18
String: 张三#########类型二:数组单列list set array##############
adress:- 北京- 上海- 南京- 成都
#行类写法:
adress1: [ 北京,上海,南京,成都 ]
########类型二 集合 多列#############
person:name: 张三age: 25sex: 男#行内写法
person1: { name: 张三,age: 16,sex: 男 }
#########对象集合 集合【person】############
#1
people:- name: 张三age: 24sex: 男- name: 李四age: 25sex: 女#2
people2:- name: 张三age: 24sex: 男- name: 李四age: 25sex: 女
#行类写法
people1: [ { name: 张三,age: 24,sex: 男 },{ name: 李四,age: 25,sex: 女 } ]
pepole2:- { name: 张三,age: 24,sex: 男 }- { name: 李四,age: 25,sex: 女 }
#########YAML: 参数引用-特殊应用############
name: 张三
user:name: 李四father: ${name}

3、yaml读取配置内容

yaml文件更强大的地方在于,他可以给我们的实体类直接注入匹配值! 支持方式:

1. 逐个注入:@Value (不支持复杂数据类型
//yaml配置
persons1:name: 张三age: 25happy: truebirth: 2002/9/11maps: {k1: v1,k2: v2}lists: [1,2,3,4]dog:name: 旺财age: 3
@Component
@ConfigurationProperties(prefix = "person1")  // 读取配置文件中的 persons 前缀的属性
//@PropertySource ("classpath:person1.properties") :加载指定的配置文件;
public class Persons {@Value("${person1.name}")private String name;@Value("${person1.age}"private Integer age;@Value("${person1.happy}")private Boolean happy;@Value("${person1.birth}")private Date birth;
//    @Value("${person1.maps}") 不支持复杂数据类型private Map<String, Object> maps;
//    @Value("${person1.lists}")private List<Object> lists;
//    @Value("${person1.dog}")private Dog dog;//有参无参构造、get、set方法、toString()方法 
}
2. 批量注入:1.@ConfigurationProperties 2.Environment类

编写一个复杂一点的实体类:Person 类

@Component //注册bean到容器中
public class Person {private String name;private integer age;private boolean marry;private Date birth;private Map<String,Object> maps;private List<Object> lists;private Dog dog;//有参无参构造、get、set方法、toString()方法 }

编写yaml文件内容

person1:name: wanglsage: 18marry: truebirth: 1990/10/19maps: {k1: v1,k2: v2}lists:- code- bodybuilding- musicdog:name: summerage: 1

将数据注入到我们的类中

/*@ConfigurationProperties作用:
将配置文件中配置的每一个属性的值,映射到这个组件中;
告诉SpringBoot将本类中的所有属性和配置文件中相关的配置进行绑定
参数 prefix = “person” : 将配置文件中的person下面的所有属性一一对应
*/@Component //注册bean@ConfigurationProperties(prefix = "person1")public class Person {private String name;private Integer age;private Boolean happy;private Date birth;private Map<String,Object> maps;private List<Object> lists;private Dog dog;} 
3. 对比

1、@ConfigurationProperties只需要写一次即可 , @Value则需要每个字段都添加

2、松散绑定:这个什么意思呢? 比如我的yml中写的last-name,这个和lastName是一样的, - 后面跟 着的字母默认是大写的。这就是松散绑定。可以测试一下

3、JSR303数据校验 , 这个就是我们可以在字段是增加一层过滤器验证 , 可以保证数据的合法性

4、复杂类型封装,yml中可以封装对象 , 使用value就不支持

结论

配置yml和配置properties都可以获取到值 , 强烈推荐 yml; 如果我们在某个业务中,只需要获取配置文件中的某个值,可以使用一下 @value; 如果说,我们专门编写了一个JavaBean来和配置文件进行一一映射,就直接 @configurationProperties,不要犹豫!

4、 JSR303数据校验 (检查属性赋值是否符合规范)

对于web服务来说,为防止非法参数对业务造成影响,在 Controller 层一定要做参数校验的!大部分 情况下,请求参数分为如下两种形式: 1. POST 、 PUT 请求,使用 2. requestBody 传递参数; GET 请求,使用 requestParam/PathVariable 传递参数。

什么是 JSR303 标准 ?

JSR的全称是Java Specification Requests(Java 规范提案),是指向JCP ( Java Community Process )提出

新增一个标准化技术规范的正式请求。

Java API规范( JSR303 )定义了 Bean 校验的标准 validation-api ,但没有提供实现。 hibernate validation 是对这个规范的实现,并增加了校验注解如 Validation 是对 来,我们以 @Email 、 @Length 等。 Spring hibernate validation 的二次封装,用于支持 spring mvc参数自动校验。接下 spring-boot 项目为例,介绍 Spring Validation 的使用

 JSR303校验注解的使用步骤
1.添加依赖,导入spring-boot-starter-validation启动器
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-validation</artifactId></dependency>
2.在实体类需要校验的成员字段(Field)上,添加校验注解。
@Component  //注册bean到容器中
//@ConfigurationProperties(prefix = "dog")
@Validated  //开启jsr303校验public class Dog {@NotNull(message = "狗名不能为空")private String name;@NotNull(message = "狗命不能为空")@Max(value = 15,message = "狗命拿来")private Integer age;@Min(value = -1,message = "狗还是个细胞")private Integer length;@Email(message = "邮箱必须合法")private String email;}
3.在Controller控制器的校验参数前,使用@Valid注解开启校验,使用BindingResult 绑定校验结果
@RequestMapping("/validationDemo")public String validationDemo(@Valid Dog dog, BindingResult result){//得到所有错误信息计数int errorCount = result.getErrorCount();//错误数大于0if (errorCount>0){//得到所有错误List<FieldError> fieldErrors = result.getFieldErrors();//迭代错误for (FieldError fieldError:fieldErrors) {//错误信息System.out.println( "属性:{},"+fieldError.getField()+"传来的值是:
{}"+fieldError.getRejectedValue()+",出错的提示消息:
{}"+fieldError.getDefaultMessage());}return "数据不合法";}else{return "数据合法";}}
4、常用注解
 // 被注解的元素必须为null@Null(message = "必须为null") // 被注解的元素必须不为null@NotNull(message = "必须不为null")
// 校验注解的元素值不为空(不为null、去除首位空格后长度为0),类型为String@NotBlank(message = "必须不为空") 
// 校验注解的元素值不为null且不为空(字符串长度不为0、集合大小不为0),类型为CharSequence、
Collection、Map、Array@NotEmpty(message = "必须不为null且不为空") 
// 被注解的元素必须为true,并且类型为boolean@AssertTrue(message = "必须为true") 
// 被注解的元素必须为false,并且类型为boolean@AssertFalse(message = "必须为false")// 被注解的元素其值必须大于等于最小值,并且类型为int,long,float,double@Min(value = 18, message = "必须大于等于18")// 被注解的元素其值必须小于等于最小值,并且类型为int,long,float,double@Max(value = 18, message = "必须小于等于18") 
// 校验注解的元素值大于等于@DecimalMin指定的value值,并且类型为BigDecimal@DecimalMin(value = "150", message = "必须大于等于150") 
// 校验注解的元素值小于等于@DecimalMax指定的value值 ,并且类型为BigDecimal@DecimalMax(value = "300", message = "必须大于等于300")// 校验注解的元素值在最小值和最大值之间,并且类型为BigDecimal,BigInteger,CharSequence,
byte,short,int,long。
@Range(max = 80, min = 18, message = "必须大于等于18或小于等于80") 
// 被注解的元素必须为过去的一个时间,并且类型为java.util.Date@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") @Past(message = "必须为过去的时
间")// 被注解的元素必须为未来的一个时间,并且类型为java.util.Date@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") @Future(message = "必须为未来的时
间")长度校验
// 被注解的元素的长度必须在指定范围内,并且类型为String,Array,List,Map@Size(max = 11, min = 7, message = "长度必须大于等于7或小于等于11")// 校验注解的元素值长度在min和max区间内 ,并且类型为String@Length(max = 11, min = 7, message = "长度必须大于等于7或小于等于11")// 校验注解的元素值的整数位数和小数位数上限 ,并且类型为float,double,BigDecimal。
@Digits(integer=3,fraction = 2,message = "整数位上限为3位,小数位上限为2位")// 被注解的元素必须符合指定的正则表达式,并且类型为String@Pattern(regexp = "\\d{11}",message = "必须为数字,并且长度为11")// 校验注解的元素值是Email,也可以通过regexp和flag指定自定义的email格式,类型为String@Email(message = "必须是邮箱")

http://www.dtcms.com/a/495851.html

相关文章:

  • 【JVM】详解 运行时数据区
  • 阿里巴巴网站装修怎么做全屏大图广东今天新闻最新消息
  • node ~ buffer
  • 做好系部宣传和网站建设做常识的网站
  • 说一下JVM中的分代回收
  • Windows下的文件加密小工具
  • 温州做网站建设合肥做淘宝网站
  • 使用 Python 将 CSV 文件转换为 PDF 的实践指南
  • RabbitMQ七种工作模式介绍:
  • 网站建设预算方案建设银行网站维护电话
  • 基础型网站湄潭建设局官方网站
  • 网站建设与管理就业岗位垫江做网站
  • freeswitch的proxy_media模式下video流的问题与修正
  • 大模型后训练(Post-Training)指南
  • 外卖网站怎么做销量用php建设一个简单的网站
  • 医药企业网站建设浙江省城乡建设厅网站
  • 【超保姆级C++开发教程】从0制作1个带MFC界面的AI图像分类工具
  • 如何将 Android 联系人备份到 Mac 的 4 种简单
  • 免费建网站可信吗wordpress 投稿 插件
  • 基于单片机的车载防酒驾智能控制系统设计
  • 网站优化排名软件推广赣州人才网最新招聘
  • 江宁外贸网站建设浦江县做网站
  • 西安网站建设 盈科成都网站建设上市
  • 【VSCode】Visual Studio Code 2025安装包及安装教程 (附所有版本下载)
  • 益阳有专做网站的吗手机网站导航代码
  • IO------------流(文件读写 )
  • UE5 测量 - 11,面积测量:补充学习多边形的生成
  • 语音合成系统---IndexTTS2:环境配置与实战
  • 网站技术开发重庆观音桥介绍
  • mysql一条sql语句的执行过程