springboot学习01(从搭建到熟悉)

本文详细介绍了如何创建Springboot项目,包括自定义banner、自动装配原理、SpringApplication的作用以及application.yaml配置。同时,文章还探讨了JSR-303数据校验、多环境配置以及Springboot的Web开发核心,如自动配置类和组件的加载机制。
摘要由CSDN通过智能技术生成


springboot的最核心的原理:自动装配
(在创建项目的时候,springboot会自动配置一些项目必要的配置,免去我们的配置步骤。但是有些配置虽然没有生效,但是同样被写在了底层源码中,当我们配置了对应的spring.xx.xxx时,就会被框架检测到,并使其生效。大部分在application.yaml文件中就可以配置了。)

创建一个Springboot项目

  • 可以在官网直接下载,导入idea开发
  • 直接使用idea创建一个springboot项目(开发选择第二种方式)
    在这里插入图片描述
    一般来说的,创建项目的配置
    在这里插入图片描述
    注意:后缀为iml的文件不能删除。否则会影响项目的文件结构

在这里插入图片描述
在这里插入图片描述
内嵌了tomcat,可以直接启动。
在这里插入图片描述
在这里插入图片描述
springboot的项目结构,其实是和MVC结构基本一致的。我们编写一个测试controller,可以看到接收的的字符串。
在这里插入图片描述
在这里插入图片描述
更改项目的端口号
在这里插入图片描述

叫你怎么修改或者生成自己想要的springboot的自定义banner

网站链接: https://www.bootschool.net/ascii-art/animals.在这里插入图片描述
重启即可在这里插入图片描述

springboot的自动装配原理

pom.xml

  • spring-boot-dependencies:核心依赖在父工程!
  • 我们在写或者引入一些springboot依赖的时候,不需要指定版本,就因为有这些版本仓库

启动器

<dependency>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-starter</artifactId>
</dependency>
  • 启动器:说白了就是springboot的启动场景;
  • 比如spring-boot-starter-web,他就会帮我们自动导入web环境所有的依赖。 spring-boot-starter-test等等,就是一种模块化的管理,需要什么就启动什么。
  • springboot会将所有的功能场景,都变成一个个的启动器
  • 我们需要使用什么功能,就只需要找到对应的启动器就可以了 ‘starter’

主程序

//@SpringBootApplication:标注这个类是一个springboot的应用:启动类下的所有资源被导入
@SpringBootApplication
public class Springboot01HelloworldApplication {

    public static void main(String[] args) {
        //静态方法,通过反射得到这个类
        //将springboot应用启动
        SpringApplication.run(Springboot01HelloworldApplication.class, args);
    }

}

读源码,从@SpringBootApplication注解开始,一步步往下拆解
结论:springboot所有自动装配都是在启动的时候扫描并加载,spring.factories所有的自动装配类都在这里面,但是不一定生效,要判断条件是否成立,只要导入了对应的starter,就有了对应的启动器,有了启动器,我们自动装配才会生效,然后装配成功。

  1. springboot在启动的时候从类路径下的META-INF/spring.factories中获取EnableAutoConfiguration指定的值;
  2. 将这些值作为自动装配类导入容器,自动装配类就生效,帮我们进行自动装配工作;
  3. 以前我们需要配置的东西,自动装配类就帮我们解决了;
  4. 整个javeEE体系的整体解决方案和自动装配都在springboot-autoconfigure的jar包中;
  5. 它将所有需要导入的的组件以全类名的方式返回,这些组件就会被加到容器中;
  6. 它会给容器中导入非常多的自动装配类,XXXAutoConfiguration,就是给容器中导入这个场景需要的所有组件,并配置好这些组件;
  7. 有了自动配置类,免去了我们手动编写配置注入功能组件等的工作。

SpringApplication

这个类主要做了以下四件事情

  1. 推断应用的类型是普通的项目还是web项目;
  2. 查找并加载所有可以初始化器,设置到initializers属性中;
  3. 找出所有的应用程序监听器,设置到listeners属性中;
  4. 推断并设置main方法的定义类,找到运行的主类;

application.yaml的配置

官方使用application.yaml和application.properties进行配置
yaml语法:key: 空格 value (语法对空格的要求很高)
注意,该文件的对象参数配置可以注入到我们的配置类中
在这里插入图片描述
常用的给类赋值方法,可以通过注解
在这里插入图片描述
在这里插入图片描述
通过yaml进行类的属性初始化,注意类要设置注解,与yaml中的名字进行对应
在这里插入图片描述

加载自己的properties的文件,指定赋值。注解,使用@PropertySource()
在这里插入图片描述
yaml中,还可以通过占位符进行赋值,所以可以大幅度减少工作量

person:
  name: ${random.int}
  age: 3
  happy: false
  birth: 2019/11/03
  maps: {k1: v1,k2: v2}
  lists:
    - code
    - music
    - girl
  dog:
    name: ${person.happy:hello}_旺财
    age: 3

JSR-303校验(注解:对类对象的数据进行数据校验,)

<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-validation</artifactId>
        </dependency>

但是在springboot2.6.6版本中,引入依赖失败。

@NotNull(message="名字不能为空")
private String userName;
@Max(value=120,message="年龄最大不能查过120")
private int age;
@Email(message="邮箱格式错误")
private String email;
 
 
空检查
@Null       验证对象是否为null
@NotNull    验证对象是否不为null, 无法查检长度为0的字符串
@NotBlank   检查约束字符串是不是Null还有被Trim的长度是否大于0,只对字符串,且会去掉前后空格.
@NotEmpty   检查约束元素是否为NULL或者是EMPTY.
    
Booelan检查
@AssertTrue     验证 Boolean 对象是否为 true  
@AssertFalse    验证 Boolean 对象是否为 false  
    
长度检查
@Size(min=, max=) 验证对象(Array,Collection,Map,String)长度是否在给定的范围之内  
@Length(min=, max=) string is between min and max included.
 
 
日期检查
@Past       验证 DateCalendar 对象是否在当前时间之前  
@Future     验证 DateCalendar 对象是否在当前时间之后  
@Pattern    验证 String 对象是否符合正则表达式的规则
 
 
.......等等
除此以外,我们还可以自定义一些数据校验规则

多环境文件配置

狂神的博客中有详细的介绍

链接: 多环境文件配置.

  • 在springboot中,类似于properties和yaml文件,都可以放在项目的四个位置,优先级不一样。默认的位置中配置文件的优先级最低。
  • 我们在项目中开发中,可能测试的环境不一致,比如端口号,我们可以通过配置yaml文件设置,选择性激活不同的配置,来达到对环境测试的随时切换。

在这里插入图片描述

自动配置原理再理解

在这里插入图片描述
假如有些类并没有生效,就需要取找到对应的启动器,在依赖中引入,就可以达到对应的类的启动条件,那么spring就将加载这些自动配置类,开启相应的服务。

Springboot Web开发

jar:webapp (自动装配)
springboot到底帮我们配置了什么,我们能不能进行修改,能修改那些东西,能不能扩展

  • XXXXAutoConfiguration:向容器中自动装配组件
  • xxxxProperties:自动装配类,装配配置文件中自定义的一些内容
    要解决的问题:
  • 导入静态资源
  • 首页
  • jsp,模板引擎Thymeleaf
  • 装配扩展SpringMVC
  • 增删改查
  • 拦截器
  • 国际化
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值