《02.Spring Boot实战:Spring Boot核心原理剖析》
来源:互联网 发布:python tcp连接不释放 编辑:程序博客网 时间:2024/05/17 12:03
在上节中我们通过了一个小的入门案例已经看到了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项目自动扫描到项目所有的包。
- 《02.Spring Boot实战:Spring Boot核心原理剖析》
- 《03.Spring Boot实战:核心原理剖析》
- Spring Boot核心原理-自动配置
- Spring Boot核心原理-自动配置
- Spring Boot核心原理-自动配置
- SpringBoot15-springboot核心-Spring Boot运行原理
- Spring Boot核心原理-自动配置
- Spring Boot核心配置
- 01 Spring Boot 核心
- 2.Spring Boot核心
- Spring Boot核心
- Spring Boot之核心
- Spring Boot核心概念
- Spring Boot核心
- Spring Boot实战与原理分析
- Spring Boot从原理到实战
- Spring Boot自动配置原理、实战
- Spring Boot 第六章 spring Boot 核心
- django view传入html代码不解释
- django 后台获取select多行
- 关于JS的两道有意思题--关于this的绑定
- [NOIP2017普及组]成绩
- 在sql语句中的参数传递区分
- 《02.Spring Boot实战:Spring Boot核心原理剖析》
- Django 基础教程
- 培养选拔干部须突出政治标准
- JavaScript数据类型
- 第七届蓝桥杯大赛个人省赛javaB组
- 【Scikit-Learn 中文文档】线性和二次判别分析
- JS 时间加减 避免年份错误的方法
- LeetCode-34. Search for a Range
- 《HTTP权威指南》学习笔记(10)第10章HTTP-NG(关键词:计算机网络/HTTP/HTTP-NG)