您的位置:首页 > 编程语言 > Java开发

《02.Spring Boot实战:Spring Boot核心原理剖析》

2017-11-21 13:29 721 查看
在上节中我们通过了一个小的入门案例已经看到了Spring Boot的强大和简单之处。本章将详细介绍Spring Boot的核心注解,基本配置和运行机制。笔者一直认为:精通一个技术一定要深入了解这个技术帮助我们做了哪些动作,深入理解它底层的运行原理,只有达到这个目标才可以熟练使用框架,最终达到融会贯通的目的。


1.启动类与@SpringBootApplication

Spring Boot的项目一般都会有注解*Application标注的入口类,入口类中会有一个main方法,main方法是一个标准的Java应用程序的入口方法,可以直接启动。@SpringBootApplication注解是Spring Boot的核心注解,用此注解标注的入口类是应用的启动类,通常会在启动类的main方法中通过 SpringApplication.run(App.class, args) 来启动Spring Boot应用项目。@SpringBootApplication其实是一个组合注解,查看源码如下:
// 程序清单:org/springframework/boot/autoconfigure/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 {

@AliasFor(annotation = EnableAutoConfiguration.class, attribute = "exclude")

   Class<?>[] exclude() default {};


   @AliasFor(annotation = EnableAutoConfiguration.class, attribute = "excludeName")

   String[] excludeName() default {};


   @AliasFor(annotation = ComponentScan.class, attribute = "basePackages")

   String[] scanBasePackages() default {};


   @AliasFor(annotation = ComponentScan.class, attribute = "basePackageClasses")

   Class<?>[] scanBasePackageClasses() default {};

}




cation注解主要组合了以下注解:(1)@SpringBootConfiguration:这是Spring Boot项目的配置注解,这也是一个组合注解:


//程序清单:org/springframewor/boot/SpringBootConfiguration

@Target(ElementType.TYPE)

@Retention(RetentionPolicy.RUNTIME)

@Documented

@Configuration

public @interface SpringBootConfiguration {


}


在Spring Boot项目中推荐使用@SpringBootConfiguration注解来替代@Configuration注解。(2)@EnableAutoConfiguration:启动自动配置,该注解会让Spring Boot根据当前项目所依赖的jar包自动配置项目的相关配置项。例如,当我们在Spring Boot项目的pom.xml文件中配置了spring-boot-starter-web依赖:
<dependency>

   <groupId>org.springframework.boot</groupId>

   <artifactId>spring-boot-starter-web</artifactId>

</dependency>


项目就会自动添加Tomcat和Spring MVC的依赖,同时Spring Boot会对Tomcat和Spring MVC进行配置项的自动配置,打开pom.xml选择文件左下角的Dependency Hierarchy查看如下图所示:


                                图2.1 spring-boot-starter-web自动配置图通过上述例子可以看出,如果我们又在项目中添加spring-boot-starter-data-solr依赖,Spring Boot就会自动进行Solr技术的相关配置。(3) @ComponentScan:扫描配置,Spring Boot默认会扫描@SpringBootApplication所在类的同级包以及它的子包。所以建议将@SpringBootApplication修饰的入口类放置在项目包下(Group Id+Artifact Id),这样做的好处是:可以保证Spring Boot项目自动扫描到项目所有的包。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: