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); } }基于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
