SpringBoot系列:Spring Boot配置文件与常用注解

一、配置文件

Spring Boot遵循约定大于配置的惯例,旨在简化开发,它默认集成了很多配置项,我们基本不需要做太多的配置就可以正常运行。如需覆盖原有属性,或者完善一些设定,我们需要自行进行配置。

Spring Boot使用一个全局的配置文件,配置文件名是固定的application,文件格式支持yml或者properties,也即配置文件为application.yml或者pplication.properties,凭个人喜好或者项目要求自行选取。

系列示例采用的是yml格式。

yml格式语法为k:(空格)v,空格不可省略,以缩进来控制层级关系,只要是左对齐的一列数据,都是同一个层级的。

这里我们配置了启动的端口为10900,即覆盖默认8080端口。

当我们需要不同的环境配置时,例如开发、测试、生产可能配置项都不同,那我们可以使用spring.profiles.active来指定。其中{profile}对应你的环境标识,比如application-dev.yml表示开发环境,application-prod.yml表示生产环境。

所以现在起作用的是application-dev.yml里面的配置,我们简单的在两个文件中设置了不同的app.env属性,至于怎么访问,我们稍后讲到。

更多的配置大家可以翻阅相关文档,例如可以设置server.servlet.context-path来更改项目访问路径,在之后的示例中,我们遇到某项配置再对其进行详细讲解。

二、常用注解

1.@Value

Spring Boot为我们提供@Value注解快速访问配置文件属性,当然这个注解并不是Spring Boot专属,它只是扩展了yml文件的支持。

还记得刚刚的app.env属性吗?我们该怎么去获取属性值呢,这就需要用到@value注解了,还有我们现在在配置文件中,新增自定义属性my.name。

新建一个Controller,getName获取name属性的值,而@Value("${my.name}")则表示获取配置文件中my节点下name的值。

同理getEnv用来获取app.env的值。

通过请求地址,如我们期待的,我们可以获取到对应的值,并且app.env的值恰也是application-dev.yml种的配置,证明spring.profiles.active是有效的。

2.@ConfigurationProperties

当我们同一个节点下存在多个属性需要注入时,一个一个属性注入可能有些繁琐,所以此时我们可以使用@ConfigurationProperties,它能将多个属性注入到对应的实体类中。

针对my节点下的girl节点,我们创建对应的实体,并使用@ConfigurationProperties(prefix = "my.girl")表明我们需要注入的节点,属性即可注入。其中@Component声明为bean对象。

编写getGirl方法进行验证。

访问请求,可以正常获取配置中的信息。

3.@PropertySource

当配置项并不在application中,而在其他的配置文件里时,我们则需要@PropertySource来帮忙了,例如我们现在config目录下的config.properties。

同样创建一个Boy实体,除了刚刚讲到的@ConfigurationProperties(prefix = "boy")外,我们还需要指明配置文件的位置,即@PropertySource(value = "classpath:config/config.properties"),表示访问的是config下的config.properties。当然不要忘了@Configuration,它声明这个一个配置项类。

类似的测试接口。

同样没有悬念的测试结果。

额外提一下,在使用@PropertySource注解时,IDEA编译器会发出spring boot Configuration Annotation Proessor not found in classpath的错误提醒,这个在pom中引入spring-boot-configuration-processor依赖后解决。为什么是额外说呢,因为好像不引入也没啥子影响。

源码地址:https://github.com/imyanger/springboot-project/tree/master/p2-springboot-config

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值