谷粒学院62——oss模块的创建及其配置
在开始写代码前,还需要配置依赖。在后端工程pom文件中之前已经配置了oss相关内容,这里摘录下。
<aliyun-sdk-oss.version>3.1.0</aliyun-sdk-oss.version>
在后端service
模块下创建service_oss
子模块。在这个模块中引入oss
的相关依赖。
<!-- 阿里云oss依赖 -->
<dependency>
<groupId>com.aliyun.oss</groupId>
<artifactId>aliyun-sdk-oss</artifactId>
</dependency>
<!--日期工具栏依赖-->
<dependency>
<groupId>joda-time</groupId>
<artifactId>joda-time</artifactId>
</dependency>
在该模块的resource
中创建application.properties
.注意将其中oss
的配置替换成自己在阿里云官网上对应生成的配置,注意替换时密钥不要复制多了空格。
#服务端口
server.port=8002
#服务名
spring.application.name=service-oss
#环境设置:dev、test、prod
spring.profiles.active=dev
#阿里云 OSS
#不同的服务器,地址不同
aliyun.oss.file.endpoint=your endpoint
aliyun.oss.file.keyid=your keyid
aliyun.oss.file.keysecret=your keysecret
#bucket可以在控制台创建,也可以使用java代码创建
aliyun.oss.file.bucketname=your bucketname
新建启动类。包结构见代码。
package com.wangzhou.oss;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.ComponentScan;
@SpringBootApplication
@ComponentScan(basePackages = "com.wangzhou")
public class OssApplication {
public static void main(String[] args) {
SpringApplication.run(OssApplication.class, args);
}
}
启动。遇到如下问题。
***************************
APPLICATION FAILED TO START
***************************
Description:
Failed to configure a DataSource: 'url' attribute is not specified and no embedded datasource could be configured.
Reason: Failed to determine a suitable driver class
这是因为我们在上传头像时不需要使用数据库,没有配置数据库,因此启动项目时去找数据库的配置无法找到。在启动类注解中添加如下属性即可解决。
@SpringBootApplication(exclude = DataSourceAutoConfiguration.class)
oss相关的配置都是固定的值,我们前面把它们写到了配置类中,但是我们在代码中要使用这些值,需要创建一个常量类来读取这些值。
在启动类的同级目录建立utils
包,包下建类ConstantPropertisUtils
。
@Component //将这个类交给spring管理
public class ConstantPropertisUtils implements InitializingBean {
@Value("${aliyun.oss.file.endpoint}") // spring注解,用于将值注入属性
private String endpoint;
@Value("${aliyun.oss.file.keyid}")
private String keyid;
@Value("${aliyun.oss.file.keysecret}")
private String keysecret;
@Value("${aliyun.oss.file.bucketname}")
private String bucketname;
public static String END_POINT;
public static String KEY_ID;
public static String KEY_SECRET;
public static String BUCKET_NAME;
@Override // 项目启动后,这个bean被实例化后执行该方法,将属性赋值给静态常量,后面在其它类中用这些属性就变得简单了。
public void afterPropertiesSet() throws Exception {
KEY_ID=this.keyid;
KEY_SECRET=this.keysecret;
END_POINT=this.endpoint;
BUCKET_NAME=this.bucketname;
}
}
java全栈日日学 文章被收录于专栏
java全栈每日必学,不要高估自己一年能做的事,不要低估自己十年能做的事