问题一:导入dependence为什么不需要指定版本?
pom.xml中存在parent工程点进去!
start--parent里面的资源过滤。
start--parent
<pluginManagement>里面定义了插件版本子工程继承以后不需要指定插件版本。
再点进去,可以看到根据springboot版本,默认设置了很多jar包的版本。(只是部分的包的版本)
问题二:项目运行的jar包从何而来
spring-boot-starter-web在启动的时候打包了,他下面的所有依赖(依赖传递,所以也有了下面所有的jar包)
自动配置的源码分析
问题三:springboot如何进行自动配置,自动配置对哪些东西进行了自动配置。
自动配置:设计 ioc 容器 配置bean
自动配置就是springboot自动将依赖里的jar包的配置bean自动注入到ioc容器。
在使用的时候可以使用@autowired和@resource进行使用。
核心启动类
点进去就是,前面三个是元注解,springbootApplication组合了前面的三个注解,点进去@springbootconfiguration,看一下底层注解。
@configuration注解,标注其为一个配置类。
介绍@EnableAutoapplication注解
点进去
点进去
关键是AutoConfigurationPackage,组件类注册了basepackage这个类
@Import(AutoConfigurationImportSelector.class)
实现自动配置非常核心的部分。
run方法的源码
一:获取run方法