Spring Cloud DataFlow是一个SpringBootApplication应用程序启动的时候是通过调用DataFlowServerApplication的main方法来启动的,我们来详细看下启动类中包含类哪些内容
@SpringBootApplication(exclude = {
SessionAutoConfiguration.class,
ManagementWebSecurityAutoConfiguration.class,
SecurityAutoConfiguration.class,
UserDetailsServiceAutoConfiguration.class,
LocalDeployerAutoConfiguration.class,
CloudFoundryDeployerAutoConfiguration.class,
KubernetesAutoConfiguration.class
})
@EnableDataFlowServer
public class DataFlowServerApplication {
public static void main(String[] args) {
SpringApplication.run(DataFlowServerApplication.class, args);
}
}
这个启动类 比较简单只有两个注解,一个main方法
@SpringBootApplication : 是Sprnig Boot项目的核心注解,目的是开启自动配置
表示一个配置类,该类声明一个或多个 @Bean 方法,并且还触发自动配置和组件扫描。这是一个便捷注释,等效于声明 @Configuration,@EnableAutoConfiguration 和 @ComponentScan 三个注解
@Configuration
该注解表示一个类声明了一个或多个 @Bean 方法,并且可以由 Spring 容器进行处理,以在运行时为这些 bean 生成 bean 定义和服务请求,
@ComponentScan的功能其实就是自动扫描并加载符合条件的组件,ComponentScan告诉Spring 哪个packages 的用注解标识的类 会被spring自动扫描并且装入bean容器。我们可以通过basePackages等属性来细粒度的定制@ComponentScan自动扫描的范围,如果不指定,则默认Spring框架实现会从声明@ComponentScan所在类的package进行扫描
@EnableAutoConfiguration 告诉SpringBoot开启自动配置功能;这样自动配置才能生效借助@Import的支持,收集和注册特定场景相关的bean定义。
然后来看下EnableDataFlowServer注解,这个注解用来激活 Spring Cloud Data Flow Server 实现。
在这个项目中启动类型单独位于独立的包中org.springframework.cloud.dataflow.server.single默认的@ComponentScan策略是无法扫描到其他包下的配置的这时候就需要使用spring boot的SPI机制来加载各个模块了,下面就来看下如何加载。