一 、概述
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的定义:
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必须是静态类。
代码示例如下: