springboot 工具类加载配置对象

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/sunnyzyq/article/details/102457434

【前言】

我们通常在对接一个 api 的时候,往往会有一些相关配置信息。

就比如下面这个例子:对接阿里的 OSS 的这个工具类

为了调用方便,我们通常会将工具类种的方法修饰为 public static

我们在其他地方使用的时候,直接写 AliyunOssUntil.uploadObject() 就可以调用了。

【思考】

但这样的写法好像不是很优雅,因为这些配置信息一旦变动,就得重新修改代码。那么,要想同步到线上,就必须得重新打包,然后进行部署启动。

为了解决这样的后顾之忧,我们可以把相关信息放在配置文件中,这样如果修改,我们只需要更新配置文件,就不会去修改代码部分。

【具体实现】

【1】创建配置类对象

(1.1)我们首先创建一个配置类对象

(1.2)然后打开对象,把相关的配置信息设置为属性,并提供对应的 getter 和 setter 方法。

对于需要初始化的属性可以用方法表明(比如这里的 ossClient ),然后在上面打上对应的 @Bean注解。

【2】配置文件写入

打开 springboot 配置文件 application.yml,然后写上相关配置信息,这里的 aliyun-oss 为这一组配置的标识,下面各属性对应配置类中的各属性,两者须保持一致。

【3】然后在对应配置类上打上 @ConfigurationProperties 和 @Component 注解。

注:@ConfigurationProperties 的作用是去加载配置文件,并把配置文件中的相关信息赋值到实例对象的属性中。并且括号里面的值是配置文件中的那个标识。

@Component 这个注解大家应该都不陌生,这个就是可以让spring扫描到。

 【4】修改工具类

(4.1)注入配置类对象

现在,我们就可以干掉之前工具类中的配置属性了,并把配置对象注入到里面。

注:记得在工具类上方加上 @Component 注解,好让 spring 扫描到

(4.2)相关思考

现在注入配置对象已经不为空,但下面的方法却不能直接使用,因为方法是 static 修饰的,而对象没有 static 修饰。

那么要解决这种情况,我们可以有两者思路:

第一种:注入对象加 static 修饰,但这种行不通,加了是注入不了的(自己可以去查看看为什么注入不了)。

第二种:增加一个对象属性,把注入的实例赋值过来,因此,这个方法就行得通了。

(4.3)增加 static 配置对象

我们增加一个 static 修饰的配置对象,并增加一个对应的 init() 初始化方法,在方法上面打上 @PostConstruct 注解。

注: @PostConstruct 标明的方法会在加载的时候首先执行,那么当 aliyunOssConfig 被实例之后,我们就可以通过这个方法将他赋值给 static 修饰的 config 了,那么工具类中的方法就可以直接使用 config 了。

(4.4)这样我们就达到了题干中【工具类加载配置对象】的实现了,并且调用方式和以前不变。

猜你喜欢

转载自blog.csdn.net/sunnyzyq/article/details/102457434