SOFABoot源码解析之启动原理(1)-注解分析

一 、概述

        SOFABoot是蚂蚁金服开源的基于 Spring Boot 的研发框架,它在Spring Boot 的基础上,提供了诸如 Readiness Check,类隔离,日志空间隔离等等能力。在增强了 Spring Boot 的同时,SOFABoot 提供了让用户可以在 SpringBoot中非常方便地使用 SOFA 中间件的能力。

         为了基于SOFABoot框架进行研发,建议大家熟读一下《SpringBoot参考指南》这本书。SpringBoot参考指南有html,pdf和epub等形式的文档,大家可以从http://docs.spring.io/spring-boot/docs/current/reference获取到最新版本。

        在此,通过详细地描述SpringBoot内部启动原理,为大家基于SOFABoot框架进行开发提供快速入门。

        由于SOFABoot基于SpringBoot项目,所以会用到SpringBoot的启动类:

1.  @SpringBootApplication
2.  @ImportResource({"classpath*:rpc-starter-example.xml" })
3.  public class SofaBootRpcDemoApplication {
4.   
5.      public static void main(String[] args)throws InterruptedException {
6.       
7.          ApplicationContext applicationContext =SpringApplication.run(SofaBootRpcDemoApplication.class, args);
8.   
9.      }
10. }
        @SpringBootApplication和SpringApplication.run开始,我们逐步分析SpringBoot的启动原理。

        首先,看一下注解@SpringBootApplication的定义:

1.  @Target(ElementType.TYPE)
2.  @Retention(RetentionPolicy.RUNTIME)
3.  @Documented
4.  @Inherited
5.  @SpringBootConfiguration
6.  @EnableAutoConfiguration
7.  @ComponentScan(excludeFilters =@Filter(type = FilterType.CUSTOM, classes = TypeExcludeFilter.class))
8.  public @interface SpringBootApplication {
9.  ……
10. }

       @SpringBootApplication是一个复合Annotation,使用了多个Annotation进行了原信息标注,其中3个比较关键的Annotation分别为:

         1. @SpringBootConfiguration,实际使用@Configuration;

         2. @EnableAutoConfiguration;

         3. @ComponentScan;

二、@Configuration

        @Configuration注解是JavaConfig形式的Spring Ioc容器的配置类,可替换Spring XML配置文件。

   被@Configuration注解的配置类包含一个或多个被@Bean注解的方法,这些方法将会被AnnotationConfigApplicationContext或AnnotationConfigWebApplicationContext类进行扫描,并用于构建bean定义,初始化Spring容器。

        @Configuration注解的配置类有如下要求:

        1.   @Configuration不可以是final类型;

        2.   @Configuration不可以是匿名类;

        3.   嵌套的configuration必须是静态类。

        代码示例如下:

1.  @Configuration
2.  public class TestConfiguration {
3.      public TestConfiguration() {
4.          System.out.println("TestConfiguration容器启动初始化。。。");
5.      }
6.   
7.      // @Bean注解注册
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

任性之闲来无事

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值