1.为什么在pom.xml中不需要指定依赖的版本号?
Spring Boot项目的统一版本父项目依赖管理。
当要使用工具包时,会根据springboot父工程的版本号来指定工具包中各个依赖的版本,进行组装后形成工具包。
例如web相关的启动包,点击
发现这个包的父依赖是spring-boot-starters包,继续点击
spring-boot-starters的父依赖是spring-boot-parent继续点击
spring-boot-parent依赖spring-boot-dependencies继续点击
发现spring-boot-dependencies做了统一的版本控制
2.为什么运行启动类,tomcat,dispatherServlet,filter就被加载了?
@SpringBootApplication组合注解下有自动装配注解:@EnableAutoConfiguration
点进去@EnableAutoConfiguration
@Import 收集并注册特定场景相关的Bean ,并加载到 IOC 容器。@EnableAutoConfiguration这个注解就是借助@Import来收集所有符合自动配置条件的bean定义,并加载到IoC容器。
我们可以直接查看一下,发现导的包中--spring--boot包下内嵌了过滤器、tomcat、servlet等我们用spring写程序时需要自己配置的东西。
3.为什么在同包下,controller类没有扫描器扫描也能运行?(没有配置文件、没有配置类)
启动类的注解@SpringBootApplication是一个组合的注解
@SpringBootConfiguration下面声明了这是个配置类,点进去有@Configuration注解。
@ComponentScan类似扫描器,默认扫描本包,也可指定扫描路径。