/**
* @SpringBootApplication用来标注主程序类。
*/
@SpringBootApplication
public class First {
public static void main(String[] args) {
//Spring应用启动起来
SpringApplication.run(First.class,args); }
}

1.引子

以上为Springboot的主程序类,将main方法运行就能将springboot项目启动。在SpringApplication的run方法中,传入的类就表示主程序类。其中,此类必须标识@SpringBootApplication注解。
如果运行没有此注解表示的类,会报错产生如下信息:
org.springframework.context.ApplicationContextException: Unable to start embedded container
Caused by:
org.springframework.context.ApplicationContextException: Unable to start EmbeddedWebApplicationContext due to missing EmbeddedServletContainerFactory bean.

2.@SpringBootApplication注解。

查看@SpringBootApplication注解,会发现此注解为一个混合注解。

1)@SpringBootConfiguration:意为SpringBoot配置类。此注解是组合注解,其中@Configuration为Spring的配置类标识。

配置类也是容器中的一个组件。

2)@EnableAutoConfiguration:开启自动配置功能。作用为,将SpringBoot中的默认配置,例如配置SpringMvc等自动配置。
@AutoConfigurationPackage:自动配置包。此注解内容如下:发现@Improt注解。此注解为Spring底层注解,是为了导入组件(组件的内容就是括号内标识的类)。

在AutoConfigurationPackages.Registrar.class类中导入的组件为下图的内容

其中metadata为注解的源信息,具体这个信息的内容可以debug看到,如下图:

在截图中可以看到metadata是@SpringBootApplication这个注解带过来的信息。

鼠标选中new PackageImport(metadata).getPackageName()右键Evulavte进行计算,可以得到结果为此主配置类所在的包。这也就能表示,其实此组件的作用就是将主配置类所在的包下所有的子包和类都扫描进去

@Import(EnableAutoConfigurationImportSelector.class) 导入哪些组件的选择器。将所有需要导入的选择器组件以全类名的方式返回。会导入一些自动配置类。具体想知道哪些自动配置,需要找到EnableAutoConfigurationImportSelector.class的父类,debug进行分析。

在此路径下可以看到所有导入的自动配置类。

SpringBoot的学习【3.HelloWorld配置细节】的更多相关文章

  1. springboot深入学习(二)-----profile配置、运行原理、web开发

    一.profile配置 通常企业级应用都会区分开发环境.测试环境以及生产环境等等.spring提供了全局profile配置的方式,使得在不同环境下使用不同的applicaiton.properties ...

  2. springboot深入学习(四)-----tomcat配置、websocket

    一.更改servlet服务器 springboot中默认可以集成多种servlet容器,当引入如下依赖时: springboot默认以tomcat作为项目的servlet容器,如果用户想要替换tomc ...

  3. [原创]java WEB学习笔记98:Spring学习---Spring Bean配置及相关细节:如何在配置bean,Spring容器(BeanFactory,ApplicationContext),如何获取bean,属性赋值(属性注入,构造器注入),配置bean细节(字面值,包含特殊字符,引用bean,null值,集合属性list map propert),util 和p 命名空间

    本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...

  4. Springboot学习03-SpringMVC自动配置

    Springboot学习03-SpringMVC自动配置 前言 在SpringBoot官网对于SpringMVCde 自动配置介绍 1-原文介绍如下: Spring MVC Auto-configur ...

  5. SpringBoot基础学习(三) 自定义配置、随机数设置及参数间引用

    自定义配置 SpringBoot免除了项目中大部分手动配置,可以说,几乎所有的配置都可以写在全局配置文件application.peroperties中,SpringBoot会自动加载全局配置文件从而 ...

  6. SpringBoot系统列 1 - HelloWorld!

    学习SpringBoot系统列之HelloWorld! 1.新建一个Maven项目 2.添加POM配置 <parent> <groupId>org.springframewor ...

  7. SpringBoot:配置文件及自动配置原理

    西部开源-秦疆老师:基于SpringBoot 2.1.6 的博客教程 秦老师交流Q群号: 664386224 未授权禁止转载!编辑不易 , 转发请注明出处!防君子不防小人,共勉! SpringBoot ...

  8. SpringBoot是如何实现自动配置的?--SpringBoot源码(四)

    注:该源码分析对应SpringBoot版本为2.1.0.RELEASE 1 前言 本篇接 助力SpringBoot自动配置的条件注解ConditionalOnXXX分析--SpringBoot源码(三 ...

  9. Springboot 框架学习

    Springboot 框架学习 前言 Spring Boot是Spring 官方的顶级项目之一,她的其他小伙伴还有Spring Cloud.Spring Framework.Spring Data等等 ...

随机推荐

  1. 用java 集合和映射实现文章的单词数目统计

    package 一_统计字母出现; import java.io.File; import java.io.FileNotFoundException; import java.util.HashMa ...

  2. Docker run命令参数整理

    Usage: docker run [OPTIONS] IMAGE [COMMAND] [ARG...] -d, --detach=false 指定容器运行于前台还是后台,默认为false -i, - ...

  3. 【双目备课】OpenCV例程_stereo_calib.cpp解析

    stereo_calib是OpenCV官方代码中提供的最正统的双目demo,无论数据集还是代码都有很好实现. 一.代码效果: 相关的内容包括28张图片,1个xml和stereo_calib.cpp的代 ...

  4. linux基础之find

    linux上文件查找工具: locate, find locate: 依赖于事先构建的索引,索引的构建在系统较为空闲时自动进行(周期性任务),手动更新数据库(updatedb) 索引构建过程需要遍历整 ...

  5. HTML基础【3】:列表标签

    无序列表 作用:给一堆内容添加无序列表语义(一个没有先后顺序整体),列表中的条目不分先后 格式: li 英文是 list item,翻译为列表项 <h4>选择居住城市(CN)</h4 ...

  6. 【HNOI 2018】游戏

    Problem Description 一次小 \(G\) 和小 \(H\) 在玩寻宝游戏,有 \(n\) 个房间排成一列,编号为 \(1,2,-,n\),相邻房间之间都有 \(1\) 道门.其中一部 ...

  7. js Infinity 属性

    Infinity 属性用于存放表示正无穷大的数值. 说明 无法使用 for/in 循环来枚举 Infinity 属性,也不能用 delete 运算符来删除它. Infinity 不是常量,可以把它设置 ...

  8. 随机森林和GBDT

    1. 随机森林 Random Forest(随机森林)是Bagging的扩展变体,它在以决策树 为基学习器构建Bagging集成的基础上,进一步在决策树的训练过程中引入了随机特征选择,因此可以概括RF ...

  9. H5高德地图获取当前位置

    <!doctype html> <html> <head> <meta charset="utf-8"> <meta http ...

  10. Django 模板继承

    本质上来说,模板继承就是先构造一个基础框架模板,而后在其子模板中对它所包含站点公用部分和定义块进行重载. 让我们通过修改 current_datetime.html 文件,为 current_date ...