简单分析springboot的源码

springboot的pom文件的起步依赖以及功能依赖

每一个版本的起步依赖中,都集成了相应的一整套的功能依赖,所需要的一套依赖

springboot的起步依赖注解@SpringBootApplication简单分析

@SpringBootApplication注解包含以下主要的注解,在起步依赖上加入以下注解也可以实现springboot的起步依赖配置

  1. @SpringBootConfiguration:
    其本质是**@Configuration**注解,声明该类为配置类
  2. @EnableAutoConfiguration:
    自动配置注解:
    包含:@Import({AutoConfigurationImportSelector.class})注解,此注解表明该注解需要引入AutoConfigurationImportSelector类的信息
    →AutoConfigurationImportSelector:该方法是加载自动配置的主要方法
    →selectImports:在此方法中加载自动配置的
    →this.getAutoConfigurationEntry
    →this.getCandidateConfigurations:在这里会发现一句话:No auto configuration classes found in META-INF/spring.factories,找到该类对应的包(package org.springframework.boot.autoconfigure)对应的META-INF/spring.factories文件,点开之后发现有很多的全类名
    随便点开一个类(例如:ServletWebServerFactoryAutoConfiguration),找到(@EnableConfigurationProperties({ServerProperties.class})),点开ServerProperties,会发现
@ConfigurationProperties(
prefix = "server",
ignoreUnknownFields = true
)

其中prefix声明前缀为server,例如会加载server. port配置(声明端口的配置),其中加载的配置在该文件所在位置对应的spring-configuration-metadata.json文件中,可以找到

{
"name": "server.port",
"type": "java.lang.Integer",
"description": "Server HTTP port.",
"sourceType": "org.springframework.boot.autoconfigure.web.ServerProperties",
"defaultValue": 8080
}

该json中间中声明端口号默认为8080
如果想修改该配置文件:在pom文件中spring-boot-starter-parent中已经声明,会扫描.yml或者是.properties中的配置信息(必须以指定的前缀才会被扫描到),在resources下创建一个application.properties配置文件,配置文件中可以指定项目启动时的端口号或者是项目的名称:

#指定端口号为8081
server.port=8081
#指定项目的路径为/dmeo
server.servlet.context-path=/demo
  1. @ComponentScan:
    包扫描注解,该注解表明约定大于配置,会扫描该启动类下的所有包,将其注入到spring容器中
  2. @Target({ElementType.TYPE}):
    声明注解的使用范围,是在类上面或者是接口上面等等
  3. @Retention(RetentionPolicy.RUNTIME)
    声明注解的生命周期,是在运行时或者是编译时等等

猜你喜欢

转载自blog.csdn.net/weixin_43794897/article/details/84498919