一、SpringBoot常用注解
二、SpringBoot自动配置机制
SpringBoot版本:1.5.13.RELEASE
对应官方文档链接:https://docs.spring.io/spring-boot/docs/1.5.13.RELEASE/reference/htmlsingle/

一、SpringBoot常用注解
  在上一篇文章中https://blog.csdn.net/zhichao_qzc/article/details/80642111引用了官方文档的入门例子,这个例子中只是告诉我们如何去快速上手SpringBoot,我们实际开发中,肯定不会在一个类中把所有业务处理包圆,通常会划分出Controller层、Service层、Dao层等。SpringBoot官方文档给出了如何去规划我们的代码,并且如何正确使用它们。
  官方文档给出了一个常用的代码层次划分结构图

  官方文档推荐将包含main方法的类放到项目的根包下,并且使用@SpringBootApplication注解进行标注,该注解会将当前类所在路径作为基准目录,扫描基准目录下所有类(包含子目录中的类)。
  @SpringBootApplication是SpringBoot提供的一个常用注解,它包含了另外3个很常用的注解,分别是

@EnableAutoConfiguration,@ComponentScan和@Configuration。
 1  2
 3 @SpringBootApplication // 等价于 @Configuration + @EnableAutoConfiguration + @ComponentScan
 4 public class Application {
 5
 6 public static void main(String[] args) {
 7 SpringApplication.run(Application.class, args);
 8 }
 9
10 } 

(1)@EnableAutoConfiguration是SpringBoot提供的一个注解,它的作用是启动SpringBoot的自动配置机制;
(2)@ComponentScan是Spring框架提供的一个注解,它能扫描项目中所有的组件(@Component, @Service, @Repository, @Controller等进行标注的类)并将其注册到Spring容器;
(3)@Configuration是Spring框架提供的一个注解,它能替代传统的xml配置文件,将Spring框架中的xml文件以Java类的形式替代,去XML是SpringBoot的一个重要思想。
  在项目中我们可以将类同时标注@EnableAutoConfiguration、@ComponentScan和@Configuration,所起的作用和@SpringBootApplication是相同的,但需要注意的是,@EnableAutoConfiguration、@ComponentScan和@Configuration这3个注解并非是捆绑销售,我们可以将他们任意组合。官方文档中给出了如下的一个例子

 1 @Configuration
 2 @EnableAutoConfiguration
 3 @Import({ MyConfig.class, MyAnotherConfig.class })
 4 public class Application {
 5
 6 public static void main(String[] args) {
 7 SpringApplication.run(Application.class, args);
 8 }
 9
10 } 

可以看到,代码中并没有使用@ComponentScan注解,而是使用@Import注解来导入组件并将其声明成一个bean。当然,如果我们对XML文件念念不忘,我们可以使用@ImportResource注解来导入XML文件,@Import和@ImportResource都是Spring框架提供的注解。

1 @Configuration
2 @EnableAutoConfiguration
3 @ImportResource(locations={"classpath:applicationContext.xml"})
4 public class Application {
5
6 public static void main(String[] args) {
7 SpringApplication.run(Application.class, args); 

二、SpringBoot自动配置机制
  SpringBoot总是尝试根据我们的jar依赖,来为我们的项目进行一些自动配置以减轻开发者环境搭建的负担,例如我们项目中依赖了spring-boot-starter-web,SpringBoot则会自动为我们进行web环境的配置(如添加内置Tomcat、配置SpringMVC等)。
  SpringBoot自动配置的幕前黑手就是上一节中提到的@EnableAutoConfiguration注解。SpringBoot自动配置是非入侵的,我们可以开启我们自己的配置来替代自动配置,例如如果我们添加了自己的数据源配置,则SpringBoot默认内置的数据库服务则不会起作用。
  我们可以在启动时加入 –debug 参数来查看当前有那些自动配置,命令行直接执行java -jar *.jar –debug即可。如果想在IDEA中查看,则首先进行如下配置

执行main方法即可看到当前有那些自动配置

如果我们不需要某些自动配置,可以通过@EnableAutoConfiguration注解的exclude或者excludeName属性来指定不需要的自动配置,需要注意的是,当不需要的进行自动配置的类不在classpath下时,此时只能通过excludeName属性指定类的全路径名来排除不需要的自动配置。当然,还有一种办法是在SpringBoot配置文件中指定spring.autoconfigure.exclude,SpringBoot配置文件一般是指classpath下默认的application.properties或者application.yml或者application.yaml,在这里不做说明,后续的文章会进行详细介绍。

1 @Configuration
2 @EnableAutoConfiguration(exclude={DataSourceAutoConfiguration.class})
3 public class Application {
4
5 public static void main(String[] args) {
6 SpringApplication.run(Application.class, args);
7 }
8
9 } 

转载于:https://www.cnblogs.com/endv/p/11252271.html

SpringBoot 入门篇(二) SpringBoot常用注解以及自动配置相关推荐

  1. SpringBoot指南(二)——常用注解及操作

    文章目录 1 Spring 1.1 @SpringBootApplication 1.2 @Configuration 1.3 @Component.@Controller.@Service.@Rep ...

  2. SpringBoot入门(二)——起步依赖

    本文来自网易云社区 在前一篇我们通过简单几步操作就生成了一个可以直接运行的Web程序,这是因为SpringBoot代替我们做了许多工作,概括来讲可以分为起步依赖和自动配置.这一篇先来看看起步依赖. 项 ...

  3. SpringBoot入门到精通-SpringBoot启动流程(七)

    定义自己的starter SpringBoot入门到精通-Spring的注解编程(一) SpringBoot入门到精通-SpringBoot入门(二) SpringBoot入门到精通-Spring的基 ...

  4. 【SpringBoot应用篇】SpringBoot+Redis实现接口幂等性校验

    [SpringBoot应用篇]SpringBoot+Redis实现接口幂等性校验 幂等性 解决方法 Pom token令牌 yml @ApiIdempotentAnn ApiIdempotentInt ...

  5. 【SpringBoot应用篇】SpringBoot集成j2cache二级缓存框架

    [SpringBoot应用篇]SpringBoot集成j2cache二级缓存框架 j2cache介绍 j2cache入门使用 pom application.yml caffeine.properti ...

  6. 【SpringBoot高级篇】SpringBoot集成Elasticsearch搜索引擎

    [SpringBoot高级篇]SpringBoot集成Elasticsearch搜索引擎 1. 什么是Elasticsearch? 2. 安装并运行Elasticsearch 2.1 拉取镜像 2.2 ...

  7. 【SpringBoot高级篇】SpringBoot集成jasypt 配置脱敏和数据脱敏

    [SpringBoot高级篇]SpringBoot集成jasypt数据脱敏 配置脱敏 使用场景 配置脱敏实践 数据脱敏 pom yml EncryptMethod EncryptField Encry ...

  8. 【SpringBoot新手篇】SpringBoot 集成H2数据库

    [SpringBoot新手篇]SpringBoot 集成H2数据库 概述h2数据库 SpringBoot整合测试 pom yml Embedded 嵌入式 Remote (client/server) ...

  9. 【SpringBoot高级篇】SpringBoot集成MongDB数据库

    [SpringBoot高级篇]SpringBoot集成MongDB数据库 MongoDB是什么 ? 主要特点 MongoDB管理 工具 MongoDB 基本概念 数据库 文档(Document) 集合 ...

  10. 【SSRS】入门篇(二) -- 建立数据源

    原文:[SSRS]入门篇(二) -- 建立数据源 通过 [SSRS]入门篇(一) -- 创建SSRS项目 这篇,我们建立了一个SSRS项目: 接下来,我们以 AdventureWorks2012 示例 ...

最新文章

  1. 配置Vlan访问控制
  2. C++标准输入流、输出流以及文件流
  3. Gradle打包命令记录
  4. 后台审核管理 ergo_Kogito,ergo规则:从知识到服务,轻松自如
  5. 中国十大科技进展2项,世界十大科技进展6项生物相关;相比工程,生物与国际差距还是较大...
  6. 公司(企业与市场)与商业模式
  7. MyBatis Generator(MBG)设计哲学与致歉
  8. 关于qt+vs2019报错的奇葩问题,无法定位程序输入点
  9. 久其报表大厅_久其报表是什么?
  10. 基于fpga的256M SDRAM控制器 【内含256m sdram仿真模型】
  11. 电容的耐压值选择---陶瓷电容、钽电容、电解电容
  12. 分布式监控系统——Zabbix(2)部署
  13. 监控安装ESXi on Arm的树莓派4b的CPU温度
  14. 教你如何赚取你的第一桶金 - 2048(含源码)
  15. 互联网早报:京东健康宠物医院上线:注册医生超3000名 提供7X24在线健康咨询服务
  16. linux系统下ls -r命令的简单实现(C语言版)
  17. 经营管理、策略经营类社区网页小游戏推荐
  18. IDA dword_xxx DCD 0xxxx用十六进制数表示的字符串解读
  19. 区块链测试(二):区块链测试
  20. 问道手游服务器找不到,问道手游安卓苹果互通服怎么不显示 鹊桥相会不能互通解决方法...

热门文章

  1. BenchmarkSQL 测试Oracle 12c TPC-C 性能
  2. 企业级监控软件使用zabbix key监控nginx status各种状态
  3. 高一学年总结·Windows Subsystem Linux
  4. 普通用户使用docker命令
  5. 【转】Redis学习---阿里云Redis多线程性能增强版详解
  6. CentOS 7 安装 Scrapy 记录
  7. hadoop1.x异常
  8. Putty密钥(PrivateKey)导入SecureCRT
  9. 2013年值得我们学习的网页设计作品【系列二】
  10. poj 1251 Jungle Roads