springboot的pom文件的起步依赖以及功能依赖
每一个版本的起步依赖中,都集成了相应的一整套的功能依赖,所需要的一套依赖
springboot的起步依赖注解@SpringBootApplication简单分析
@SpringBootApplication注解包含以下主要的注解,在起步依赖上加入以下注解也可以实现springboot的起步依赖配置
- @SpringBootConfiguration:
其本质是**@Configuration**注解,声明该类为配置类 - @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
- @ComponentScan:
包扫描注解,该注解表明约定大于配置,会扫描该启动类下的所有包,将其注入到spring容器中 - @Target({ElementType.TYPE}):
声明注解的使用范围,是在类上面或者是接口上面等等 - @Retention(RetentionPolicy.RUNTIME)
声明注解的生命周期,是在运行时或者是编译时等等