一、参数配置化
上一篇我们学了阿里云OSS的使用,那么我们为了方便使用OSS来上传文件,就创建了一个【util】类,里面有一个【AliOSSUtils】类,虽然本人觉得没啥不方便的,但是黑马视频又说这样还是存在不便维护和管理问题,我一时也还是想不明白
但是想了一下确实,因为我们只是学了简单文件的OSS上传,但其实还有很多复杂的比如:
那么我们肯定要对应不同的上传,再生成对应很多的阿里云OSS上传的【工具类】,那么每一个类里都得配置一遍基本配置信息,那么加入有一天这个accessKey被我禁用了,或者换了一个bucketName,那就还得一个一个到这些类里改配置,很不方便
那么更好的的办法就是在我们之前连接数据库的那个【application.properties】文件里配置好全局配置,然后在要用的地方引用一下
实现这个,就要用到【@Value( " ${配置文件中的Key} " )】注解
那么首先去【application.properties】文件配置好,注意【application.properties】的代码里其实都默认是字符串,所以不需要带双引号""和分号;
然后回到【AliOSSUtils】类,把原配置的具体信息全去掉,在上面加【@Value( " ${配置文件中的Key} " )】注解
二、更简便、结构清晰的配置文件:yml
虽然在【application.properties】文件里配置的文件够方便了,but!他不好看
【application.properties】文件的配置是【Key=Value】的形式,但是没什么层级结构
那么还有一种配置文件叫:【application.yml】,或者【application.yaml】,这两是一样的
对应关系:
注意:!!!yml/yaml的代码里每个属性前的【缩进】绝对不能漏,然后冒号“:”一定要有空格,然后才是值
另外yml还可以配置全局的一些对象、集合变量
要用的时候就搭配【@Value( " ${配置文件中的Key} " )】注解
废话不多说,那现在就去在【resource】目录下创建一个【application.yml】文件
然后把你【application.properties】对应的配置写到【application.yml】
然后删掉【application.properties】就行了
三、@ConfigurationProperrties( prefix = "前缀" )
那么有的人还是觉得之前【@Value( ${...} )】的写法太繁琐(其实我觉得这样就够简单了),然后这里就又有了一个新的注解方法【@ConfigurationProperrties( prefix = "前缀" )】
总体逻辑就是:
在用一个【工具类】封装这几个变量
然后用【@ConfigurationProperrties( prefix = "前缀" )】注解跟【application.yml】配置文件绑定上
最后在要用的地方调用这个【工具类】即可(这个工具类要用@Component放入IOC容器,共别的地方用@Autowire注解来使用)
封装【工具类】
外部使用这个【工具类】
在之前阿里云文件上传的工具类里,注释掉之前的那个配置
然后用【@Autowire】注入依赖,使用【工具类】
在方法里用【工具类】的getter方法获得变量值
有的idea这样弄完会有这样的警告,(我的没有),不理他也行,要是觉得不舒服,就把下面的依赖配置到【pom.xml】文件里
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
</dependency>
可做可不做