目录
2、源码1:command + @SpringBootApplication 可查看
3、源码2:command + @SpringBootConfiguration可查看
一、启动
1、有服务,没有默认主页
![](https://i-blog.csdnimg.cn/blog_migrate/2464fe63408be4409618fdf18d3fff69.png)
表示服务已经启动,只是没有显示欢迎页面或Rrror错误页面
2、没有服务
二、源码分析
1、@SpringBootApplication 注解源码
![](https://i-blog.csdnimg.cn/blog_migrate/38e9019cd30c0bc661cbd6d6030285c9.png)
如下可见:spring图标,内置tomact服务
2、源码1:command + @SpringBootApplication 可查看
@Target({ElementType.TYPE})//能出现的位置
@Retention(RetentionPolicy.RUNTIME)//改变注解的生命周期
@Documented//被注解类,生成doc的时候,继承文档
@Inherited//被注解类,继承父类的注解。以上四个是jdk提供的原注解
@SpringBootConfiguration//声明为配置类
@EnableAutoConfiguration//启用自动配置,写了就启用,不写就不启用
@ComponentScan(//自动扫描包
excludeFilters = {@Filter(
type = FilterType.CUSTOM,
classes = {TypeExcludeFilter.class}
), @Filter(
type = FilterType.CUSTOM,
classes = {AutoConfigurationExcludeFilter.class}
)}
)
public @interface SpringBootApplication {
}
3、源码2:command + @SpringBootConfiguration可查看
@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Configuration//基于注解ioc配置,表明当前类为配置类
public @interface SpringBootConfiguration {
@AliasFor(
annotation = Configuration.class
)
boolean proxyBeanMethods() default true;
}
三、其他
1、关于包的扫描
通过以上源码分析,我们知道:
DemoApplication就相当于springboot的一个配置类,
并且提供自动扫描包的功能。
它能扫描哪些包?
当前包以及子包。
如:我们当前包为
package
com.yyh.demo;
com.yyh.demo 【能扫描】
com.yyh.demo.a
【能扫描】
com.yyh.demo.a.b
【能扫描】
com.yyh
【不能扫描】
2、springboot的强大之处
它并不是简化了我们原来之前的配置,
而是springboot把我们之前的配置给封装了起来,
用一个注解,解决了我们几个注解,甚至加上配置文件,才能解决的问题。
这个就是springboot的强大之处,
它使我们的注解配置、xml配置,进行进一步的简化。
不仅让我们的编码更轻量级,也使我们的配置更轻量级
![](https://i-blog.csdnimg.cn/blog_migrate/8ab62b1780b8c8bca7a04b9d3df74abe.png)