SprintBoot学习日记(二)—— 属性配置管理

我们已经建立好了项目,也成功run起来了。

现在我们可以想想,开发一个web程序,一定会有很多是属性需要配置,如数据库地址、用户名、服务器端口号,日志的打印配置等等;而且有开发经验的朋友 也会知道一套程序 会有多个环境(如开发环境、测试环境、准生产环境、生产环境),不同环境的数据库等属性也是不同的。 

好的,这次我就开始玩一些springboot的属性配置

我们先看一下项目结构,发现新建项目后 我们会有一个 application.properties,如图

这个application.properties 就可以帮助我们实现属性的配置。我们先简单的修改一下端口号以及虚拟路径。

这里我们设置属性时,输入前几位 是有提示的,很方便

我这里的配置如下,然后我们restart项目

这里我们看到已经修改成功。但是这样修改配置,看起来是不是有点累,一个server 就有好多属性 ,后续再配置数据库连接等属性 ,更加混乱。  所以呢这里我们可以换一种写法,*.yml文件。可以清楚的看到server 有2个属性,port 和path,跟之前比,是不是跟清晰了呢 。

接下来,我们配置了属性 该如何在程序中加载使用这些属性呢。我们先学习一下@value 的用法。

可以看到我们成功获取配置的属性。

但是我们又会发现,我这里只是写了2个属性就觉得繁琐了,如果对方有10个 、8个属性,对我这种懒人来说,那还不得崩溃了。

所以接下来 我们采用关系映射的方式 并依赖注入 ,获取配置属性。我这里新建了个包为config,并新建ServerConfig类,与属性配置的server进行映射;这里我用了三个注解,首先

@Component

表明为组件 ,可以实现依赖注入;

@ConfigurationProperties(prefix = "server"

表明是加载前缀是server的属性,

@Data

lombok 实现get set等方法

需要注意类里面 我们定义的是

contextPath 和 属性中 context-path 对应。

重新运行,成功!  这样我们就实现了一个对象 管理属性配置中对应对象的所有属性

文章开头,我们也提到了多环境的问题,那么怎么实现呢。

我另外复制2个yml文件,dev环境和prod环境

dev 环境配置端口8080  prod环境配置8090

并在主yml中指定环境版本

restart项目 ,发现切到dev环境后,8080可以正常访问、8090就不能;如果想切到prod环境,也只需要在主yml 文件中,dev 换成prod 即可。

这样就实现了环境的快速切换。也方便日后的打包和部署。

另外把项目分享到GitHub上,也方便参考

https://github.com/SimonVampire/springboot-study.git

PS:lombok坑点补充

@Data注解包含多个注解的
Equivalent to {@code @Getter @Setter @RequiredArgsConstructor @ToString @EqualsAndHashCode}

需要额外注意:@EqualsAndHashCode 这个注解。

callSuper默认是false ;

如果你的类有父类,且把一些通用属性放到父类中,比如ID

这个时候对象equal比较,是不会比较ID的,当ID不一致这样就造成比较结果是错误的。

解决办法:在你的实体类上追加@EqualsAndHashCode(callSuper = true)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值