SpringBoot的学习【3.HelloWorld配置细节】
/**
* @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配置细节】的更多相关文章
- springboot深入学习(二)-----profile配置、运行原理、web开发
一.profile配置 通常企业级应用都会区分开发环境.测试环境以及生产环境等等.spring提供了全局profile配置的方式,使得在不同环境下使用不同的applicaiton.properties ...
- springboot深入学习(四)-----tomcat配置、websocket
一.更改servlet服务器 springboot中默认可以集成多种servlet容器,当引入如下依赖时: springboot默认以tomcat作为项目的servlet容器,如果用户想要替换tomc ...
- [原创]java WEB学习笔记98:Spring学习---Spring Bean配置及相关细节:如何在配置bean,Spring容器(BeanFactory,ApplicationContext),如何获取bean,属性赋值(属性注入,构造器注入),配置bean细节(字面值,包含特殊字符,引用bean,null值,集合属性list map propert),util 和p 命名空间
本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...
- Springboot学习03-SpringMVC自动配置
Springboot学习03-SpringMVC自动配置 前言 在SpringBoot官网对于SpringMVCde 自动配置介绍 1-原文介绍如下: Spring MVC Auto-configur ...
- SpringBoot基础学习(三) 自定义配置、随机数设置及参数间引用
自定义配置 SpringBoot免除了项目中大部分手动配置,可以说,几乎所有的配置都可以写在全局配置文件application.peroperties中,SpringBoot会自动加载全局配置文件从而 ...
- SpringBoot系统列 1 - HelloWorld!
学习SpringBoot系统列之HelloWorld! 1.新建一个Maven项目 2.添加POM配置 <parent> <groupId>org.springframewor ...
- SpringBoot:配置文件及自动配置原理
西部开源-秦疆老师:基于SpringBoot 2.1.6 的博客教程 秦老师交流Q群号: 664386224 未授权禁止转载!编辑不易 , 转发请注明出处!防君子不防小人,共勉! SpringBoot ...
- SpringBoot是如何实现自动配置的?--SpringBoot源码(四)
注:该源码分析对应SpringBoot版本为2.1.0.RELEASE 1 前言 本篇接 助力SpringBoot自动配置的条件注解ConditionalOnXXX分析--SpringBoot源码(三 ...
- Springboot 框架学习
Springboot 框架学习 前言 Spring Boot是Spring 官方的顶级项目之一,她的其他小伙伴还有Spring Cloud.Spring Framework.Spring Data等等 ...
随机推荐
- C#调用endtask
原文最早发表于百度空间2009-03-23 写这个小工具主要是因为自动化测试那边反馈了一个问题和endtask有关,结果写完之后发现这个问题从程序外部测试不了……c#调endtask主要也是用DllI ...
- keepalived + lvs
Keepalived原理 Keepalived原理 keepalived也是模块化设计,不同模块复杂不同的功能,下面是keepalived的组件 core check vrrp libipfwc li ...
- Character Encoding in .NET
https://docs.microsoft.com/en-us/dotnet/standard/base-types/character-encoding#Encodings Characters ...
- vmware workstation 14 快速安装操作系统
一.NAT网络配置 设置子网IP.子网掩码 网关IP:子网IP前三位+2 DHCP设置 二.网卡配置 vi /etc/sysconfig/network-scripts/ifcfg-ens33 TYP ...
- Learning-Python【9】:Python文件操作
1.什么是文件 文件是操作系统提供给用户或应用程序的一种虚拟单位,该虚拟单位直接映射的是硬盘空间.通俗点说,文件就是存放数据的地方 2.为何要处理文件 用户或应用程序直接操作文件(读/写)就被操作系统 ...
- ActiveReports 大数据分析报告:2018中国电影再次迎来黄金时代
回顾2018,中国电影市场收获颇丰.先是凭借春节档<红海行动>.<唐人街探案>双双实现30亿票房突破,而后暑期档火力全开,<我不是药神>.<西虹市首富> ...
- Windowsphone8外包团队——wp8控件学习资源整理
一天一天学 windows phone 控件 之 Slider(十七) 摘要:Slider 是我们最常见的控件之一,看到最多的一般在两个地方 ,一个是声音的大小,一个是色域.控制声音大小的网上很多, ...
- https://localhost:1158/em运行不正常
1.页面无法打开 一般是由于网站安全问题直接挂掉,可以更换浏览器,如Google Chrome.Fire Fox等.不建议使用IE Google浏览器使用如下, 直接继续 接着以用户sys,密码cha ...
- P1908 逆序对
传送门 这题似乎不应该出现在这里.. 日常做法(归并): #include<iostream> #include<cstdio> #include<algorithm&g ...
- IDEA中更改Tomcat服务器的URL
先别参考以下的做法,貌似出了点状况,后续修正!!! 直接上图吧 看IDEA的右上角 点击黄色方框内的Edit Configurations,进入以下的编辑面 后面四个框内的都可以修改,当然不要修改和其 ...


