【前言】
我们通常在对接一个 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)这样我们就达到了题干中【工具类加载配置对象】的实现了,并且调用方式和以前不变。
转载:https://blog.csdn.net/sunnyzyq/article/details/102457434