SpringBoot配置文件及常用注解
文章目录
一、配置文件
SpringBoot默认提供了一个application.properties
的配置文件,并支持properties和yaml两种格式的配置文件。如果同时存在两种类型的配置文件,默认会先加载application.properties。
1.两种配置文件格式
(1) properties格式
properties格式配置文件与spring项目写法一致,基本格式如下:
server.port=8081
server.servlet.context-path=/demo
##数据源相关配置
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8
spring.datasource.username=root
spring.datasource.password=root1234
(2) yaml格式
yaml格式的配置文件扩展名为yaml或yml均可,基本格式如下:
server:
port: 8081
servlet:
context-path: /demo
spring:
## 数据源相关配置
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8
username: root
password: root1234
2.properties格式与yaml格式的区别
- properties写起来存在很多重复,yaml格式为层级关系无重复
- yaml格式的key和value大小写敏感,value前需要有空格
3.获取配置文件中的值
通过自动获取方式:
application.properties配置文件:
app.sp.url=xxxxx
@Value自动获取:
@Value("${app.sp.url}")
private String url;
4.多环境配置文件的使用
项目中存在不同环境的多套配置文件,例如application-prod.properties
和application-dev.properties
两套配置文件。
新建一个application.properties
,添加spring.profiles.active=dev
则代表使用dev的配置文件。
二、SpringBoot的常用注解
1.@SpringBootApplication
@SpringBootApplication
是Sprnig Boot项目的核心注解,目的开启自动配置,注解源码如图所示,包含了三个重要的注解:@SpringBootConfiguration
、@EnableAutoConfiguration
和@ComponentScan
@ComponentScan注解
Spring框架通过@Controlle
,@Service
,@Repository
,@Component
,@Configuration
来定义一个bean,@ComponentScan
注解就是用来自动扫描被这些注解标识的类,最终生成IOC容器里的bean。
可以指定的扫描范围:
- basePackages:指定具体扫描的类
- includeFilters:指定满足Filter条件的类
- excludeFilters:排除满足Filter条件的类
所以SpringBoot的启动类最好是放在root package下,因为默认不指定basePackages。
@EnableAutoConfiguration注解
将带有@ConfigurationProperties
注解的类注入为Spring容器的Bean。如果使用了@ConfigurationProperties
但是没有在启动类上增加这个注解,则@ConfigurationProperties
将不起作用。
@SpringBootConfiguration
@SpringBootConfiguration
是SpringBoot项目中的配置注解,@SpringBootConfiguration
注解可以用java代码的形式实现Spring中xml配置文件配置的效果,并会将当前类内声明的一个或多个以@Bean
注解标记的方法的实例纳入到Srping容器中,并且实例名就是方法名。
2.@Component
放在类上,将普通类实例化放到Spring容器,很多注解是基于该注解。
3.@Configuration和@Bean
@Configuration
放在类上,标识当前类是配置类,并会将当前类内声明的一个或多个以@Bean
注解标记的方法的实例纳入到Srping容器中,并且实例名就是方法名(其实就是靠@Component
注解)。
@Bean
放在方法上,相当于xml配置文件中的bean
4.@ConfigurationProperties
将配置文件中的参数映射成一个对象,通过prefix来设定前缀,然后将后面的和对象的属性名一致就能实现注入(注入的属性需要提供get和set方法 , 因为spring底层其实就是通过反射调用该对象的set方法)。
5.@Controller、@Service、@Repository
都是基于@Component