1、SpringBoot特性
①起步依赖,所有需要的依赖全部配置在一起
②自动配置:遵循约定大约配置的原则,在boot程序启动后,一些bean对象会自动注入到ioc容器,不需要手动声明,简化开发
③内嵌的Tomcat、Jetty(无需部署WAR文件)、外部化配置、不需要XML配置(properties/yml)
2、SpringBoot 开发一个web应用
需求:使用 SpringBoot 开发一个web应用,浏览器发起请求 /ello后,给浏览器返回字符串“helo world ~"
不使用SpringBoot:配置依赖、配置servlet、配置beans扫描、写Controller
使用SringBoot:引入spring-boot-stater-web、写Controller
3、其他使用
3.1读取配置信息
值前边必须有空格,作为分隔符
使用空格作为缩进表示层级关系,相同的层级左侧对齐
@Value(“${键名}”)
@ConfigurationProperties(prefix=“前缀”)
3.2 启动类注解说明
@SpringBootApplication 已包含 @SpringBootConfiguration@EnableAutoConfiguratior @ComponentScan
3.3 外部类注册
如果要注册的bean对象来自于第三方(不是自定义的),是无法用 @Component 及衍生注解声明bean的
@Bean
@lmport
◆ 导入 配置类
◆ 导入 ImportSelector 接实现类
@Import(Xxx.class)
@springBootApplication
@Import(CommonConfig.class)
◆ @EnableXxxx注解,封装@Import注解
3.4 注册条件
@Conditional0nProperty 配置文件中存在对应的属性,才声明该bean
@ConditionalOnMissingBean 当不存在当前类型的bean时,才声明该bean
@ConditionalOnClass 当前环境存在指定的这个类时,才声明该bean
3.5 SpringBoot自动配置原理
遵循约定大约配置的原则,在boot程序启动后,起步依赖中的一些bean对象会自动注入到ioc容器
①在主启动类上添加了SpringBootApplication注解这个注解组合了
EnableAutoConfiguration注交
②EnableAutoConfiguration注解又组合了Import注解,导入了AutoConfigurationlmportSelector类
③实现selectImports方法,这个方法经过层层调用,最终会读取META-INF 目录下的 后缀名 为imorts的文件,当然了,boot2.7以前的版本,读取的是spring.factories文件。
④读取到全类名了之后,会解析注册条件,也就是@Conditional及其衍生注解,把满足注册条件的Bean对象自动注入到IOC容器中