pom.xml

插件

把项目打包成一个可执行的超级jar(uber-jar),用java -jar运行。

    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>

父依赖

利用maven的依赖管理功能,继承很多常用库的依赖版本,在声明时候就不需要使用版本号了。

其中它主要是依赖一个父项目,主要是管理项目的资源过滤及插件!

<parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.2.6.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
</parent>

此依赖还有一个父依赖,

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-dependencies</artifactId>
    <version>2.2.6.RELEASE</version>
    <relativePath>../../spring-boot-dependencies</relativePath>
 </parent>

这里才是真正管理SpringBoot应用里面所有依赖版本的地方,SpringBoot的版本控制中心;

以后导入依赖默认是不需要写版本;但是如果导入的包没有在依赖中管理着就需要手动配置版本了;

起步依赖 spring-boot-starter

都以spring-boot-starter-前缀,有助于SpringBoot应用程序的构建

<dependencies>
        <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>
            <exclusions>
                <exclusion>
                    <groupId>org.junit.vintage</groupId>
                    <artifactId>junit-vintage-engine</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
    </dependencies>

SpringBoot将所有的功能场景都抽取出来,做成一个个的starter (启动器),只需要在项目中引入这些starter即可,所有相关的依赖都会导入进来 , 我们要用什么功能就导入什么样的场景启动器即可 ;我们未来也可以自己自定义 starter


主启动类

默认的主启动类

@SpringBootApplication 将@ComponentScan、@SpringBootConfiguration、@EnableAutoConfiguration这三个注解组合在一起。

package com.hecn;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

/**
 * 应用程序的启动引导类(bootstrap class),也是主要的Spring配置类
 *
 * @author 24497
 */
@SpringBootApplication // 开启组件扫描和自动配置
public class Springboot01HelloworldApplication {

  public static void main(String[] args) {
    //负责启动引导应用程序
    SpringApplication.run(Springboot01HelloworldApplication.class, args);
  }
}

结论:

  1. SpringBoot在启动的时候从类路径下的META-INF/spring.factories中获取EnableAutoConfiguration指定的值
  2. 将这些值作为自动配置类导入容器 , 自动配置类就生效 , 帮我们进行自动配置工作;
  3. 整个J2EE的整体解决方案和自动配置都在springboot-autoconfigure的jar包中;
  4. 它会给容器中导入非常多的自动配置类 (xxxAutoConfiguration), 就是给容器中导入这个场景需要的所有组件 , 并配置好这些组件 ;
  5. 有了自动配置类 , 免去了我们手动编写配置注入功能组件等的工作;

SpringBoot      SpringBoot

本博客所有文章除特别声明外,均采用 CC BY-SA 3.0协议 。转载请注明出处!