从0开始学习Spring Boot-02

本文从Spring Boot的Hello World程序入手,详细介绍了POM文件中父项目和依赖的设置,特别是`spring-boot-starter-web`启动器的作用。接着,深入探讨了主程序类中的`@SpringBootApplication`注解及其包含的其他注解,如`@SpringBootConfiguration`、`@EnableAutoConfiguration`和`@AutoConfigurationPackage`,解析了Spring Boot如何通过自动配置简化开发工作。
摘要由CSDN通过智能技术生成

1.Hello World探究


1.POM文件

1.父项目

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

它的父项目是
<parent>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-dependencies</artifactId>
  <version>2.3.1.RELEASE</version>
</parent>
它来管理Spring Boot应用中所有以来的版本-<properties>标签

Spring Boot的版本仲裁中心
导入存在的依赖默认不需要写版本,不存在的依赖要写版本

2.导入的依赖

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

spring-boot-starter-web
spring-boot-starter:spring boot场景启动器-导入了web模块相关依赖

Spring Boot将所有的功能场景都抽取出来,做成一个个的starter(启动器),只需要在项目中引入这些starter相关场景的所有依赖都会导入进来。要用什么功能,就导入什么场景的启动器。
启动器

2.主程序类,主入口类

//@SpringBootApplication来标注一个主程序类,说明这是一个Spring Boot应用
@SpringBootApplication
public class HelloworldApplication {

    public static void main(String[] args) {
        //Spring启动起来
        SpringApplication.run(HelloworldApplication.class, args);
    }

}
  • @SpringBootApplication:Spring Boot应用标注在某个类上说明这个类是Spring Boot的主配置类,Spring Boot就应该运行这个类的main方法来启动Spring Boot应用。
@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan(
    excludeFilters = {@Filter(
    type = FilterType.CUSTOM,
    classes = {TypeExcludeFilter.class}
), @Filter(
    type = FilterType.CUSTOM,
    classes = {AutoConfigurationExcludeFilter.class}
)}
)
  • @SpringBootConfiguration:Spring Boot的配置类,标注在某个类上,表示这是一个Spring Boot配置类;

    • @Configuration:配置类上来标注这个注解;
  • @EnableAutoConfiguration:开启自动配置功能;

@AutoConfigurationPackage
@Import(AutoConfigurationImportSelector.class)
  • @AutoConfigurationPackage:自动配置包
    • @Import(AutoConfigurationPackages.Registrar.class)
      Spring的底层注解@Import,给容器中导入一个组件;导入的组件由AutoConfigurationPackages.Registrar.class
      将主配置类的所在包及所有子包中的所有组件扫描到Spring容器中。
@Override
public void registerBeanDefinitions(AnnotationMetadata metadata, BeanDefinitionRegistry registry) {
	register(registry, new PackageImports(metadata).getPackageNames().toArray(new String[0]));
}
  • @Import(AutoConfigurationImportSelector.class)
    • AutoConfigurationImportSelector:导入哪些组件的选择器
      将需要导入的组件以全类名的方式返回;这些组件就会添加到容器中;
      会给容器中导入自动配置类(xxxAutoConfiguration)
      有了自动配置类,免去了手动编写配置注入功能组件等工作;

Spring Boot在启动的时候从类路径下的META-INF/spring.factories中获取EnableAutoConfiguration指定的值,将这些值作为自动配置类导入到容器中,自动配置类就生效,帮我们进行自动配置工作。
自动配置类

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

L a i c - B L Y

老板大气~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值