tulip notes
首页
  • 学习笔记

    • 《Vue》
  • 踩坑日记

    • JavaScript
  • MQ
  • Nginx
  • IdentityServer
  • Redis
  • Linux
  • Java
  • SpringBoot
  • SpringCloud
  • MySql
  • docker
  • 算法与设计模式
  • 踩坑与提升
  • Git
  • GitHub技巧
  • Mac
  • 网络
  • 项目构建合集
  • 一些技巧
  • 面试
  • 一些杂货
  • 友情链接
  • 项目发布
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

Star-Lord

希望一天成为大师的学徒
首页
  • 学习笔记

    • 《Vue》
  • 踩坑日记

    • JavaScript
  • MQ
  • Nginx
  • IdentityServer
  • Redis
  • Linux
  • Java
  • SpringBoot
  • SpringCloud
  • MySql
  • docker
  • 算法与设计模式
  • 踩坑与提升
  • Git
  • GitHub技巧
  • Mac
  • 网络
  • 项目构建合集
  • 一些技巧
  • 面试
  • 一些杂货
  • 友情链接
  • 项目发布
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • 探索SpringBoot

    • 初步认识SpringBoot
      • 1 starter
        • 它是什么
        • Java配置方式
        • starter依赖的jar冲突问题
        • 有些starter没有指定版本
      • 2 自动配置过程
      • 3 全局配置文件
        • 多环境的配置文件的支持
        • 指定环境的方式
        • 配置文件加载的位置
    • 自定义starter
    • 一些常用注解
    • 自动装配
    • spring中开启事务
    • Spring中事务的属性
    • SpringBoot启动流程
    • Spring中Bean的创建跟循环依赖
    • IOC的实现机制是什么
  • 常用功能实现

  • Security认证授权

  • 扩展

  • 实战与注意事项

  • 其它

  • 《SpringBoot》笔记
  • 探索SpringBoot
EffectTang
2023-02-23
目录

初步认识SpringBoot

# 什么是SpringBoot

# 1 starter

  • Spring Web -- spring-boot-starter-web

springboot中的starter是什么

# 它是什么

starter = 依赖 + 配置

每个SpringBoot项目中,都引入了多个starter,这些starter就是类似jars的东西,但是它不等同于jars,而是某个开发环境所需要的全部jars,以及对应的配置。或者说stater,它是一个开发场景的支持,比如我们引入web-starter就可以进行web应用的开发,在引用mybatis对应的stater就可以使用mybatis。

这也是SpringBoot的优势之一,提供了简化的企业级开发方式

贴图位置

# Java配置方式

starter中包含的配置都是通过Java类实现的——Java配置方式。

@Configuration
public class SpringConfig{
    
    @Bean
    public Date getDate(){
        return new Date();
    }
}
//@Bean 相当于 spring中xml配置文件中的<bean>标签,
//方法名作为组件的id,返回类型就是组件的类型,返回值就是组件在容器中的示例
1
2
3
4
5
6
7
8
9
10

通过注解告诉程序这是配置文件,从而达到“类文件即为配置的目的”

这种方式相较于 @Controller、@Service 之类的直接注入的优势是:

  1. 不仅可以将自定义类注入,还能将三方引用包中的类,也当成bean实现注入(自定义类直接用上述的注解注入即可)

关于配置的注解还有很多,这里不一一列举

# starter依赖的jar冲突问题

内容

# 有些starter没有指定版本

因为:当前的starter集成了另外的一个starter,而另外一个starter指定了版本

基于spring官方创建的SpringBoot项目,继承spring-boot-starter-parent.pom,而它又继承spring-boot-dependencies.pom————在这个文件中它指定了很多starter的默认版本,因此某些starter不用指定版本也可以。

使用阿里远程服务器创建的springboot,pom文件则无这种继承关系(最终继承于spring-boot-dependencies.pom),因此版本需要在当前pom文件中指定(version、或在properties中指定)

简单来说就是:父starter指定了版本,因此子starter不用指定,当然如果子starter指定的版本(重写了),跟父不一样,使用子starter的版本。

pom示例
1

温馨提示:使用阿里远程服务器创建的SpringBoot项目,会有一些已经写好的配置文件,你只需改变参数即可,比如数据库连接、mybatis-mapper文件位置等

# 2 自动配置过程

内容待补充

# 3 全局配置文件

  • springboot提供了一个全局配置文件application.properties用于进行自定义配置
  • 某些starter的自动配置类需要相关的属性配置,引入之后不用配置也可启动,因为springboot提供了默认配置
  • springboot 全局配置文件支持yaml语法、properties键值对配置语法

当然,如果默认配置不满足开发需求,你也可以重写这部分配置,最终结果也会以重写的配置为准

# 多环境的配置文件的支持

全局配置文件(application-{profile}.properties/yml)也叫做主配置文件,在编写它的时候,我们可以使用配置来——指定不同的环境使用不同的配置文件

#比如在配置文件中指定使用dev环境,我们可以通过设置不同的端口号进行测试;
#我们启动SpringBoot,就可以看到已经切换到dev下的配置了;
spring.profiles.active=dev
1
2
3

例如:

  • application-test.properties 代表测试环境配置
  • application-dev.properties 代表开发环境配置

如果没有进行环境的指定,则SpringBoot它默认使用application.properties主配置(或者application.yml),且该默认配置任何时候都会加载,不管是否指定配置环境(换句话说,即使指定active为dev,仍会加载默认配置)

如果存在同名的配置项,明确指定环境的配置优先

# 指定环境的方式

上述说的是通过配置的方式进行指定,但在开发中我们还可以通过命令行的方式进行指定:

java -jar xxx-xx-xx.jar --spring.profiles.active=test
1

如此,即使在打包时,配置文件指定的环境为dev,在运行时,仍会以test环境运行

通过在命令行中设置环境变量,可以快速切换不同的配置环境,而无需修改代码或重新编译。这对于在开发、测试和生产环境中使用不同的配置非常有用。

# 配置文件加载的位置

外部加载配置文件的方式十分多,我们选择最常用的即可,在开发的资源文件中进行配置!

springboot 启动会扫描以下位置的application.properties或者application.yml文件作为Spring boot的默认配置文件:

优先级1:项目路径下的config文件夹配置文件
优先级2:项目路径下配置文件
优先级3:资源路径下的config文件夹配置文件
优先级4:资源路径下配置文件
1
2
3
4

优先级由高到底,高优先级的配置会覆盖低优先级的配置;

SpringBoot会从这四个位置全部加载主配置文件;互补配置;

上次更新: 2025/04/23, 16:23:16
自定义starter

自定义starter→

最近更新
01
面向切面跟自定义注解的结合
05-22
02
时间跟其他数据的序列化
05-19
03
数据加密与安全
05-17
更多文章>
Theme by Vdoing | Copyright © 2023-2025 EffectTang
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式