springboot之自动配置

时间:2022-07-23
本文章向大家介绍springboot之自动配置,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

我们来看主程序类。

package com.gong;

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

//pringBootApplication用于标识这是一个主程序
@SpringBootApplication
public class HelloWorldMainApp {
    public static void main(String[] args) {
        //Spring应用启动起来
        SpringApplication.run(HelloWorldMainApp.class,args);
    }
}

用@SpringBootApplication标识说明这个类是主配置类。springboot就应该运行这个类的Main方法来启动springboot应用。

我们查看该注解里面有什么:

@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}
)}
)
public @interface SpringBootApplication {
    ......
}

一、@SpringbootConfiguration

用@SpringBootConfiguration标识springboot配置类:标注在某个类上,表示这是一个配置类;@SpringBootConfiguration注解里面:

@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Configuration
public @interface SpringBootConfiguration {
}

Configuration配置类上标识这个注解,配置类也是容器中的一个组件。

二、EnableAutoConfiguration

开启自动配置功能,以前需要配置的东西,springboot帮我们进行自动配置。

我们看看里面有什么:

@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@AutoConfigurationPackage //自动配置包
@Import({EnableAutoConfigurationImportSelector.class})
public @interface EnableAutoConfiguration {
    String ENABLED_OVERRIDE_PROPERTY = "spring.boot.enableautoconfiguration";

    Class<?>[] exclude() default {};

    String[] excludeName() default {};
}

自动配置包又被表示了@Import({Registrar.class}),spring的底层注解@import,给容器导入一个组件。即将主配置类即(SpringBootApplication标注的类)的所在的包以及所有子包里面的所有组件扫描到spring容器。