技术方案分享】华为云OBS&RDS开发实战-java版(中篇)

网友投稿 803 2022-05-30

1  实验目的

使用IDEA、Vscode开发工具,基于springboot、VUE.js框架开发和测试单元编写

能够集成 OBS-Java-SDK 和 RDS for MySQL 进行业务开发

了解用户鉴权、用户信息查询以及用户数据更新等业务实现逻辑

2  项目实战要求

在华为云上创建OBS桶 和 RDS for MySQL 并初始化数据库

IDEA工具导入Springboot项目,集成 OBS SDK 和数据库RDS开发环境

查看华为云官方SDK文档,实现“OBSservice”类中 uploadOneFile 和 deleOneFile 方法

能够编写junit测试类,实现接口数据测试

使用VScode工具加载前端代码,输入用户名密码后,查看profile 图片,并修改图片

3  实战项目介绍

本实践是一个前后端分离的项目,通过集成华为云OBS Java SDK 和华为云RDS数据库,实现用户中心个人图片上传、更新功能。

3.1  业务流程图

3.2  部署架构图

3.3  项目实战技术栈

【技术方案分享】华为云OBS&RDS开发实战-java版(中篇)

本项目是一个前后端分离项目,涉及:

开发工具:后端开发工具 IntelliJ IDEA 、前端开发工具 VScode

开发技术栈:springboot 、vue.js 、jwt、mybatis-plus、OBS Java-SDK

应用部署技术栈:ECS、EIP 、 RDS(MySQL)、OBS、华为云CodeHub

运维技术栈:云日志服务 LTS

4  前置条件

已注册华为云账号,完成实名认证,同时账号不能处于欠费或冻结状态;

账户需有足够的余额或代金券;

工具安装:安装好IDEA以及VScode。

获取源代码:gitee上获取(https://gitee.com/HuaweiCloudDeveloper/dtse-practice)

5  后端代码调试

5.1  代码调试

pom.xml 配置OBS SDK、MySQL驱动等依赖

4.0.0 org.springframework.boot spring-boot-starter-parent 2.3.7.RELEASE org.example obs-sdk 1.0-SNAPSHOT org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-starter-test org.springframework.boot spring-boot-starter-data-jpa mysql //数据库依赖 mysql-connector-java com.baomidou //mybatis mybatis-plus-boot-starter 3.3.1 com.huaweicloud //OBS SDK esdk-obs-java-bundle [3.21.8,) org.projectlombok lombok com.fasterxml.jackson.core jackson-annotations 2.10.0 io.jsonwebtoken jjwt-api 0.11.2 io.jsonwebtoken jjwt-impl 0.11.2 runtime io.jsonwebtoken jjwt-jackson 0.11.2 runtime org.springframework.boot spring-boot-configuration-processor true com.google.code.findbugs annotations 3.0.1 org.springframework.boot spring-boot-maven-plugin org.apache.maven.plugins maven-javadoc-plugin 3.0.0

5.2  修改配置项

server: port: 9090 #服务端口 spring: application: name: dtse-practice-demo #数据库配置参数 datasource: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://IP(数据库绑定的公网IP):3306/dtse?useUnicode=true&characterEncoding=utf8 #数据库连接地址 username: root password: ************** #数据库密码 jpa: open-in-view: off security: oauth2: resourceserver: jwt: issuer-uri: logging: level: root: info com.huaweicloud: debug jwt: config: ttl: 360000 ##OBS 配置信息 obs: config: bucketname: ***** ##OBS桶名称 #objectname: dtsetraining/Dtest endPoint: https://obs.cn-north-4.myhuaweicloud.com ##访问桶,概述页面获取 ak: **** ##访问秘钥AK sk: **** ##访问秘钥SK

实现OBSService类的 uploadOneFile 和 deleteOneFile 方法

package com.huaweicloud.dtse.service; import com.huaweicloud.commons.config.OBSParams; import com.huaweicloud.commons.response.Result; import com.huaweicloud.commons.response.ResultCode; import com.huaweicloud.dtse.service.impl.IOBSService; import com.obs.services.ObsClient; import com.obs.services.model.PutObjectResult; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.io.InputStream; import java.io.UnsupportedEncodingException; import java.net.URLDecoder; /** * OBS service接口 */ @Service public class OBSService implements IOBSService { @Autowired OBSParams obsParams; /** * @param inputStream 上传至OBS数据流参数 * @return 返回存入OBS请求参数 */ @Override public String uploadOneFile(InputStream inputStream) { //1、从obsParams中获取OBS 访问配置参数 String endPoint = obsParams.getEndPoint(); String ak = obsParams.getAk(); String sk = obsParams.getSk(); String bucketname = obsParams.getBucketname(); String objectname = obsParams.getObjectname(); //2、创建ObsClient实例 ObsClient obsClient = new ObsClient(ak, sk, endPoint); //3、使用obsClient 的putObject方法,将数据存储至对象存储 OBS PutObjectResult putObjectResult = obsClient.putObject(bucketname, objectname, inputStream); return putObjectResult.getObjectUrl(); } /** * @param deleobjectname 需要删除对象的请求参数 * @return 返回删除状态 */ @Override public Result deleteOneFile(String deleobjectname) { //1、从obsParams中获取OBS 访问配置参数 String endPoint = obsParams.getEndPoint(); String ak = obsParams.getAk(); String sk = obsParams.getSk(); String bucketname = obsParams.getBucketname(); //2、创建ObsClient实例 ObsClient obsClient = new ObsClient(ak, sk, endPoint); //3、使用obsClient 的deleteObject方法,删除OBS中对象 try { obsClient.deleteObject(bucketname, URLDecoder.decode(deleobjectname, "UTF-8")); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } return new Result(ResultCode.SUCCESS); } }

Test类,初始化数据

package com.huaweicloud; import com.baomidou.mybatisplus.core.toolkit.IdWorker; import com.huaweicloud.commons.pojo.User; import com.huaweicloud.dtse.service.UserService; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringRunner; @RunWith(SpringRunner.class) @SpringBootTest() public class test { User user = new User(); @Autowired private UserService userService; @Test public void saveUser() { //1、初始化对象参数 String id = (String) IdWorker.getIdStr(); String mobile = "15927356938"; String username = "dtse"; String password = "dtse"; user.setId(id); user.setMobile(mobile); user.setUsername(username); user.setPassword(password); //2、调用UserService 的save方法保存对象至数据库中。 userService.save(user); } }

5.3  项目打包

IDEA项目打包

项目目录target查看生成的jar包

5.4  项目部署

jar包上传到服务器

运行jar包

相关文章:

【技术方案分享】华为云OBS&RDS开发实战-java版(上篇)

【技术方案分享】华为云OBS&RDS开发实战-java版(下篇)

Java 对象存储服务 OBS

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Spring依赖注入的三种方式(好的 坏的和丑的)
下一篇:MySQL 为什么需要两阶段提交?
相关文章