Spring Boot原理解析1

    xiaoxiao2021-03-25  77

    Spring Boot

    @SpringBootApplication public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } } 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 { ... }虽然定义使用了多个Annotation进行了原信息标注,但实际上重要的只有三个Annotation: @Configuration(@SpringBootConfiguration点开查看发现里面还是应用了@Configuration) @EnableAutoConfiguration @ComponentScan

    所以,如果我们使用如下的SpringBoot启动类,整个SpringBoot应用依然可以与之前的启动类功能对等:

    @Configuration @EnableAutoConfiguration @ComponentScan public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } }

    @Configuration

    这里的@Configuration对我们来说不陌生,它就是JavaConfig形式的Spring Ioc容器的配置类使用的那个@Configuration,SpringBoot社区推荐使用基于JavaConfig的配置形式,所以,这里的启动类标注了@Configuration之后,本身其实也是一个IoC容器的配置类。

    基于JavaConfig的配置形式是这样的:

    @Configuration public class MockConfiguration{ @Bean public MockService mockService(){ return new MockServiceImpl(dependencyService()); } @Bean public DependencyService dependencyService(){ return new DependencyServiceImpl(); } }

    http://www.smartcitychina.cn/QianYanJiShu/2017-03/8300.html?ref=myread
    转载请注明原文地址: https://ju.6miu.com/read-19320.html

    最新回复(0)