小言_互联网的博客

SpringBoot四:简单分析主程序入口SpringbootWebApplication

379人阅读  评论(0)

这里只对主程序作简单分析,那个自动配置Auto原理留到后面来说,因为那是最SpringBoot最核心的知识!!!

分析主程序SpringbootWebApplication.java,我这个是SpringBoot自带生成的

package com.xue.springbootweb;

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

@SpringBootApplication
public class SpringbootWebApplication {

    public static void main(String[] args) {
        SpringApplication.run(SpringbootWebApplication.class, args);
    }

}

1、这里关键是@SpringBootApplication这个注解,其实它是个组合注解,点击去看到很多注解,但是~

@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 {

2、重要的就是@SpringBootConfiguration、@EnableAutoConfiguration、@ComponentScan三个注解,可以说这三个注解替换掉@SpringBootApplication也可以启动web项目,所以@SpringBootApplication完全由这是三个注解组成

3、@SpringBootConfiguration点进去发现是由@Configuration注解组成,这个注解说明这是一个配置类(主程序类是一个配置类)

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

4、@EnableAutoConfiguration这个注解标注,表示开启自动配置功能,以前我们需要配置的东西,Spring Boot帮我们自动配置(以前是xml配置)。这里面的文章我就不深入了,这个就是SpringBoot的核心,这里提一下自动配置功能研究重点是@AutoConfigurationPackage 、@Import({AutoConfigurationImportSelector.class})

总之@EnableAutoConfiguration的作用就是开启自动配置功能,将主配置类(@SpringBootApplication标注的类)的所在包及下面所有子包里面的所有组件扫描到Spring容器

@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@AutoConfigurationPackage
@Import({AutoConfigurationImportSelector.class})
public @interface EnableAutoConfiguration {
    String ENABLED_OVERRIDE_PROPERTY = "spring.boot.enableautoconfiguration";

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

    String[] excludeName() default {};
}

5、@ComponentScan的作用是将@SpringBootApplication标注的类的包中所有子包里面的所有组件扫描到Spring容器,也可以说告诉Spring从哪里找到组件(@Component或@Service或@Repository或@Controller等标注的类就是组件

 

 


转载:https://blog.csdn.net/qq_41055045/article/details/101632851
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场