入门hello world案列:
https://blog.csdn.net/weixin_43723712/article/details/84191811
pom.xml解析:
https://blog.csdn.net/weixin_43723712/article/details/84191882
@SpringBootApplication用于标识该类为Springboot的启动类,是由以下几个注解复合而成
@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
//用于标识此类为springboot的配置类,作用等同与spring的@Configuration
@SpringBootConfiguration
//用于开启自动配置
@EnableAutoConfiguration
@ComponentScan(
excludeFilters = {@Filter(
type = FilterType.CUSTOM,
classes = {TypeExcludeFilter.class}
), @Filter(
type = FilterType.CUSTOM,
classes = {AutoConfigurationExcludeFilter.class}
)}
)
@SpringBootApplication中的 @EnableAutoConfiguration由以下几个注解复合而成
@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@AutoConfigurationPackage
@Import({AutoConfigurationImportSelector.class})
@EnableAutoConfiguration注解中的@AutoConfigurationPackage注解中有@Import({Registrar.class})注解,该注解用于给容器中导入组件,即带有该注解会自动配置和Spring boot启动类相同包及其子包下的所有组件
Registrar.class中有如下方法(源码撑腰)
public void registerBeanDefinitions(AnnotationMetadata metadata, BeanDefinitionRegistry registry) {}
//方法体中new AutoConfigurationPackages.PackageImport(metadata).getPackageName()得到的为com.zkq.springboot.study,com.zkq.springboot.study为Spring boot 启动器所在的包
@EnableAutoConfiguration注解中的@Import({AutoConfigurationImportSelector.class})用于导入许多位于下面位置中的自动配置类
org/springframework/boot/spring-boot-autoconfigure/2.1.0.RELEASE/spring-boot-autoconfigure-2.1.0.RELEASE.jar!/META-INF/spring.factories.org.springframework.boot.autoconfigure.EnableAutoConfiguration
AutoConfigurationImportSelector.class有如下方法:
//selectImports会调用getAutoConfigurationEntry方法,返回包含自动配置类的String []
public String[] selectImports(AnnotationMetadata annotationMetadata) { }
//AutoConfigurationEntry 为AutoConfigurationImportSelector的静态内部类,getAutoConfigurationEntry方法会返回一个名为 configurations的 List,configurations包含了许多自动配置类的全路径
protected AutoConfigurationImportSelector.AutoConfigurationEntry getAutoConfigurationEntry(AutoConfigurationMetadata autoConfigurationMetadata, AnnotationMetadata annotationMetadata){ }
用于表明该类为一个controller且会返回json数据,其中包含Spring的@Controller和@ResponseBody两个注解
@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Controller
@ResponseBody
@ConfigurationProperties()注解用在类上,用于将类中的属性和配置文件中的属性进行绑定,获取配置文件中值
@Value("")用在类中的字段上,获取配置文件中的值并向类中相应字段赋值
使用这两个注解需要在pom.xml中引入一下依赖,通过该依赖引入配置文件处理器
org.springframework.boot
spring-boot-configuration-processor
true
该注解用于指定类读取指定的配置文件,默认类读取application.yml配置文件
该注解配置在配置类上,用于加载Spring的配置文件,使其生效
@Bean
将方法的返回值作为一个组件添加到容器中,容器中组件的默认id为方法名
@Configuration
用于表明该类为一个配置类