零碎Spring Boot 学习笔记

0.如何启动一个spring boot 项目

方法1 使用maven下的springboot插件启动项目: mvn spring-boot:run
方法2 mvn package; java-jar xxx.jar运行

1.spring boot 是如何加载运行的

spring boot 有个默认集成的插件 spring-boot-loader,编译时会自动引入。jar中manifest定义了启动类为loader中的jarlauncher。
jarlauncher最终会执行项目的Applaication.class。
jarlauncher会通过替换jre内置的jar的url访问协议[org.springframework.boot.loader.har.hander]实现处理一些class patch的问题,
毕竟springboot的jar执行的时候并不会解压到临时目录,且启动类和项目的主类完全不在一个目录里面,还将依赖的jar全部打包到了内部。不处理掉会无法访问项目的代码和依赖包。
或者说自定义了项目内的代码和资源文件的访问URL协议实现。

2.web容器

spring boot可以无缝切换web容器,目前支持tomcat(默认) jetty undertow三种容器技术。
想要使用jetty或者undertow直接添加相关依赖starter包,并在spring-boot-starter-web包中排除默认的spring-boot-starter-tomcat

3.如何外置配置文件

springboot支持从以下路径读取配置文件:

  • 当前目录下的/config目录
  • 当前目录
  • classpath里的/config目录
  • classpath根目录

classpath指的是WEB-INF下的classes目录

结论:jar同目录新建一个config目录,然后配置文件放里面。


4.理解 spring-boot-starter-parent

spring boot项目的pom文件,parent指向了spring-boot-starter-parent

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.2.0.RELEASE</version>
    </parent>

parent包本身只包含一个pom文件,没有任何代码。
这个pom文件主要包含内容如下(以2.2.0.RELEASE版本 为例)
1.指定默认的jdk版本1.8
2.设置这个parnet包的parent为spring-boot-dependencies(上层依赖)
3.设置了maven的编译配置 处理和打包了配置文件
4.配置了maven编译springboot项目需要的插件

5.理解 spring-boot-dependencies

这个包也只有一个pom文件,主要是用来管理依赖的。dependencies的版本号与springboot的版本号一致.
里面包含了spring boot项目常用依赖组件的版本号,这些版本号都是与相应版本的springboot兼容的。
也是是以springboot的版本为核心,配置外围组件的版本。
2.2.0.RELEASE版本的dependencies一共配置了556个依赖版本。如果你添加的依赖包含在内则不需要添加版本号,否则则需要添加版本号。

6.理解 spring-cloud-dependencies

该包依旧只包含了一个配置pom文件,他的parnet是spring-cloud-dependencies-parent
1.配置了多个不同spring版本的仓库[里程碑版本 正式发布版本 快照版本。。。]这种不同发布类型的版本放在了不同的仓库
2.配置了一堆spring cloud 相关组件的版本 比如openfeign sleuth,但不多,貌似只有自家的几个产品。

7.理解spring-cloud-dependencies-parent

只包含了一个pom文件
1.配置了快照版本 里程碑版本 和 正式版本的仓库地址
2.配置了一个maven插件maven-enforcer-plugin(用来查看包的依赖关系数的)

点赞
  1. 头像 7777说道:
    Google Chrome Windows 10

    :huaji:

  2. 头像 Jatin_sorroso说道:
    Google Chrome Android 9

    I am very much happier to see this blog ,i have following you since 4 years!

    1. coderstory coderstory说道:
      Google Chrome Windows 10

      ???

发表评论

电子邮件地址不会被公开。必填项已用 * 标注