第一springboot 程序 HelloWorld分析
问题分析
为什么使用的是jar项目:jar
应用SpringBoot默认的打包方式就是jar,默认把项目部署到内嵌的tomcat中
继承的spring-boot-starter-parent是干嘛的
SpringBoot的父项目,这里项目帮我们管理了很多基本的依赖(用过的没用过的都在里面),我们要用这些依赖需要在我们的项目中吧依赖写错来,版本号不写,交给SpringBoot的parent项目统一管理
引入的spring-boot-starter-web包是干嘛的
SpringBoot和SpringMvc整合的依赖,这个包把SpringMvc相关的包都引入进来了 ,包括tomcat的包,Spring相关的包,日志相关包,json相关的包,自动配置的包等都引入进来了
@EnableAutoConfiguration标签
开启SpringBoot的自动配置功能(spring-boot-starter-autoconfigure.jar)
EnableAutoConfiguration -AutoConfigurationImportSelector
EnableAutoConfiguration标签引入了一个 AutoConfigurationImportSelector一个自动配置的选择器, 它会去找自动配置的jar包(spring-boot-starter-autoconfigure.jar) 里面的 META-INF/spring.factories文件里面的 EnableAutoConfiguration配置项下的一些自动配置的类,找到这些类加载并做自动配置。比如:DispatcherServletAutoConfiguration就帮我们配置 DispatcherServlet , WebMvcAutoConfiguration就是帮我们对SpringMvc做自动配置,比如视图解析器就在里面。
为什么是使用main方法运行程序SpringApplication.run(Example.class, args);
- 加载程序
- 解析相关配置
- 完成自动装配
- 打包项目到内嵌的tomcat中
- 启动内墙的tomcat
为什么没有部署tomcat
SpringBoot内墙tomcat,启动的时候自动把项目打包的内嵌的Tomcat中
拓展标签
@Configuration
配置标签,它是Spring的配置标签,只要贴了这个标签的类就可以被识别为Spring的配置类(相当于是SpringContext.xml这样的配置文件就有了)
@Bean
它是Spring 的bean的定义标签,就是打了这个标签的方法 , 返回的对象会自动交给Spring容器管理,相当于是
@ComponentScan
ioc自动扫描,相当于是<context:componentScan package="..."* 默认扫描当前包及其子包
@SpringBootApplication
该标签就包含了如下三个标签
@SpringBootConfiguration
- @Configuration :Spring配置标签
@EnableAutoConfiguration :开启自动配置标签
@ComponentScan :组件扫描标签
@ConfigurationProperties
可以根据前缀 prefix 属性过滤出properties文件中的配置 ,自动的把这些配置项绑定到该标签所在的类中,根据名字赋值。
@PropertySource("clssspath:xxx.properties")
导入xx.properties配置文件
@ImportResource("classpath:xxx.xml")
导入xml配置