SpringBoot 学习笔记
SpringBoot
注解
@Autowired (ByType 优先, 多个同类型则使用 ByName)
@Resource (ByName 优先, 未找到后使用 ByType 备选)
@Configuration
@Bean
这两个注解的作用是替代传统的 xml 配置文件
@Bean 的形参会自动以 @Autowired 的方式进行注入
@Primary
@Qualifier
解决自动注入时的冲突问题, @Qualifier 的优先级高于 @Primary, 前者是默认值的思想而后者的思想是筛选
@Import
等同于 xml 配置文件中的 <import> 标签, 引入 @Configuration 类
@ImportResource({"classpath:beans.xml"})
将指定 xml 配置文件中的对象引入 IOC 容器
@ComponentScan
等同于 <context:component-scan> 标签
----- 配置信息
@ConfigurationProperties
被动接受 properties 中定义的变量
@Value("${properties}")
主动获取 properties 中定义的变量
@PropertySource({"classpath:hero.properties"})
指定配置文件, 不能使用 yml 文件, 且优先级低于 application.properties/yml
----- JSR-303
@Validated
声明为需要验证的类
@Min
@Max
@NotNull
@NotBlank
@NotEmpty
@Range
@Pattern
----- 多环境配置
@Profile
根据环境决定代码是否生效
----- 自动配置
@Conditional
派生注解:
@ConditionalOnJava
@ConditionalOnBean
@ConditionalOnMissingBean
配置信息
同级目录中 properties 的优先级高于 yaml
优先级(由高到低):
- args
- file:./config/*/application
- file:./config/application
- file:./application
- class:/config/application
- classpath:/applicaion
org.springframework.boot.context.config.ConfigDataEnvironment
JSR-303
validated
多环境配置
profile
spring:
profiles:
active: dev
自动配置
基于配置信息来实现的
debug: true
查看自动配置详情
AOP
springboot 默认的动态代理是 cglib
可以通过 spring.aop.proxy-target-class=false 指定动态代理方式为 jdk 动态代理(基于类的自动注入需要改为基于接口的自动注入)
静态资源路径
优先级 (由低到高):
/resource/public/
/resource/static/
/resource/resources/
/WEB-INF/resources/
org.springframework.boot.autoconfigure.web.servlet.WebMvcAutoConfiguration
等同于 spring-webmvc.xml
org.springframework.boot.autoconfigure.web.servlet.WebMvcProperties