当前位置: 首页 > news >正文

唐山建设网站建站网推什么意思

唐山建设网站建站,网推什么意思,盐山县网站建设价格,网络工作室官网源码一.AOP切面公共字段填充 问题分析 如果都按照上述的操作方式来处理这些公共字段, 需要在每一个业务方法中进行操作, 编码相对冗余、繁琐,那能不能对于这些公共字段在某个地方统一处理,来简化开发呢? 答案是可以的,我们使用AOP切…

一.AOP切面公共字段填充

问题分析

如果都按照上述的操作方式来处理这些公共字段, 需要在每一个业务方法中进行操作, 编码相对冗余、繁琐,那能不能对于这些公共字段在某个地方统一处理,来简化开发呢?

答案是可以的,我们使用AOP切面编程,实现功能增强,来完成公共字段自动填充功能。

 实现思路

1. 2 在发生insert操作时 需要为字段赋值

3. 4 在发生insert update操作时 需要为字段赋值

我们为了简便操作就要通过切面这种方式统一处理为这几个字段赋值的操作

比如在持久层Mapper 执行insert, 就可以通过切面拦截这个insert操作

我们还需要设置一个手段, 能够知道当前持久层的操作是否需要为公共字段赋值(一堆连接点怎么找切入点)

我们就是通过 自定义注解 的方式为这个Mapper的方法加入注解, (让这个方法成为切入点)

作为一个标识表示该操作需要赋值 没有标识就不需要

整体实现过程:

 技术点:枚举、注解、AOP、反射

1) 枚举(创建一个枚举类, 包含insert, update, 加在注解类AutoFill内部,用以区分是需要为四个字段还是两个字段赋值)

2). 自定义注解 AutoFill,用于标识需要进行公共字段自动填充的方法

3). 自定义切面类 AutoFillAspect,统一拦截加入了 AutoFill 注解的方法,通过反射为公共字段赋值

 在内部使用反射机制完成赋值

//根据当前不同的操作类型,为对应的属性通过反射来赋值if(operationType == OperationType.INSERT){//为4个公共字段赋值try {Method setCreateTime = entity.getClass().getDeclaredMethod(AutoFillConstant.SET_CREATE_TIME, LocalDateTime.class);Method setCreateUser = entity.getClass().getDeclaredMethod(AutoFillConstant.SET_CREATE_USER, Long.class);Method setUpdateTime = entity.getClass().getDeclaredMethod(AutoFillConstant.SET_UPDATE_TIME, LocalDateTime.class);Method setUpdateUser = entity.getClass().getDeclaredMethod(AutoFillConstant.SET_UPDATE_USER, Long.class);//通过反射为对象属性赋值setCreateTime.invoke(entity,now);setCreateUser.invoke(entity,currentId);setUpdateTime.invoke(entity,now);setUpdateUser.invoke(entity,currentId);} catch (Exception e) {e.printStackTrace();}}else if(operationType == OperationType.UPDATE){//为2个公共字段赋值try {Method setUpdateTime = entity.getClass().getDeclaredMethod(AutoFillConstant.SET_UPDATE_TIME, LocalDateTime.class);Method setUpdateUser = entity.getClass().getDeclaredMethod(AutoFillConstant.SET_UPDATE_USER, Long.class);//通过反射为对象属性赋值setUpdateTime.invoke(entity,now);setUpdateUser.invoke(entity,currentId);} catch (Exception e) {e.printStackTrace();}}

4). 在 Mapper 的方法上加入 AutoFill 注解

二. 阿里云文件上传 

因为在新增菜品时,需要上传菜品对应的图片(文件),包括后绪其它功能也会使用到文件上传,故要实现通用的文件上传接口。

文件上传,是指将本地图片、视频、音频等文件上传到服务器上,可以供其他用户浏览或下载的过程。文件上传在项目中应用非常广泛,我们经常发抖音、发朋友圈都用到了文件上传功能。

实现文件上传服务,需要有存储的支持,那么我们的解决方案将以下几种:

  1. 直接将图片保存到服务的硬盘(springmvc中的文件上传)
    1. 优点:开发便捷,成本低
    2. 缺点:扩容困难
  2. 使用分布式文件系统进行存储
    1. 优点:容易实现扩容
    2. 缺点:开发复杂度稍大(有成熟的产品可以使用,比如:FastDFS,MinIO)
  3. 使用第三方的存储服务(例如OSS)
    1. 优点:开发简单,拥有强大功能,免维护
    2. 缺点:付费

在本项目选用阿里云的OSS服务进行文件存储。(前面课程已学习过阿里云OSS,不再赘述)

实现步骤:

 1). 定义OSS相关配置

 

2). 读取OSS配置

配置属性类  加载yml文件  完成赋值

3). 生成OSS工具类对象

项目启动时就可以加载下面这个配置类

启动程序 自动加载

其中AliOssUtil类

@Data
@AllArgsConstructor
@Slf4j
public class AliOssUtil {private String endpoint;private String accessKeyId;private String accessKeySecret;private String bucketName;/*** 文件上传** @param bytes* @param objectName* @return*/public String upload(byte[] bytes, String objectName) {// 创建OSSClient实例。OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);try {// 创建PutObject请求。ossClient.putObject(bucketName, objectName, new ByteArrayInputStream(bytes));} catch (OSSException oe) {///} catch (ClientException ce) {} finally {if (ossClient != null) {ossClient.shutdown();}}//文件访问路径规则 https://BucketName.Endpoint/ObjectNameStringBuilder stringBuilder = new StringBuilder("https://");stringBuilder.append(bucketName).append(".").append(endpoint).append("/").append(objectName);log.info("文件上传到:{}", stringBuilder.toString());return stringBuilder.toString();}
}

 4). 定义文件上传接口

@RestController
@RequestMapping("/admin/common")
public class CommonController {@Autowiredprivate AliOssUtil aliOssUtil;/*** 文件上传*/@PostMapping("/upload")@ApiOperation("文件上传")public Result<String> upload(MultipartFile file){log.info("文件上传:{}",file);try {//原始文件名String originalFilename = file.getOriginalFilename();//截取原始文件名的后缀   dfdfdf.pngString extension = originalFilename.substring(originalFilename.lastIndexOf("."));//构造新文件名称String objectName = UUID.randomUUID().toString() + extension;//文件的请求路径String filePath = aliOssUtil.upload(file.getBytes(), objectName);return Result.success(filePath);} catch (IOException e) {log.error("文件上传失败:{}", e);}return Result.error(MessageConstant.UPLOAD_FAILED);}
}

 


文章转载自:
http://cheeseburger.wsgyq.cn
http://bonami.wsgyq.cn
http://autistic.wsgyq.cn
http://beslave.wsgyq.cn
http://aphanite.wsgyq.cn
http://choosing.wsgyq.cn
http://astrologer.wsgyq.cn
http://christian.wsgyq.cn
http://appositional.wsgyq.cn
http://acrospire.wsgyq.cn
http://bioacoustics.wsgyq.cn
http://butty.wsgyq.cn
http://antichristian.wsgyq.cn
http://angiocarpy.wsgyq.cn
http://bible.wsgyq.cn
http://afghanistani.wsgyq.cn
http://babbling.wsgyq.cn
http://cantabile.wsgyq.cn
http://amebocyte.wsgyq.cn
http://accelerative.wsgyq.cn
http://asbestous.wsgyq.cn
http://balneation.wsgyq.cn
http://abluted.wsgyq.cn
http://canberra.wsgyq.cn
http://biface.wsgyq.cn
http://bummel.wsgyq.cn
http://adulterant.wsgyq.cn
http://balladist.wsgyq.cn
http://adduce.wsgyq.cn
http://callboy.wsgyq.cn
http://centimo.wsgyq.cn
http://benthos.wsgyq.cn
http://adlittoral.wsgyq.cn
http://annuitant.wsgyq.cn
http://alloy.wsgyq.cn
http://calendula.wsgyq.cn
http://carabid.wsgyq.cn
http://casefy.wsgyq.cn
http://australasia.wsgyq.cn
http://archimedes.wsgyq.cn
http://alular.wsgyq.cn
http://cannabinoid.wsgyq.cn
http://bairn.wsgyq.cn
http://admeasure.wsgyq.cn
http://brose.wsgyq.cn
http://aphyllous.wsgyq.cn
http://abomasum.wsgyq.cn
http://chasm.wsgyq.cn
http://anastasia.wsgyq.cn
http://aneurysm.wsgyq.cn
http://chromosphere.wsgyq.cn
http://cark.wsgyq.cn
http://androgenesis.wsgyq.cn
http://cheeselike.wsgyq.cn
http://annunciatory.wsgyq.cn
http://blastomycetes.wsgyq.cn
http://christ.wsgyq.cn
http://anodize.wsgyq.cn
http://arrestant.wsgyq.cn
http://binnacle.wsgyq.cn
http://buntline.wsgyq.cn
http://backbone.wsgyq.cn
http://arenic.wsgyq.cn
http://bannerol.wsgyq.cn
http://antifederal.wsgyq.cn
http://bilievable.wsgyq.cn
http://anathemata.wsgyq.cn
http://abusively.wsgyq.cn
http://ask.wsgyq.cn
http://argentiferous.wsgyq.cn
http://associative.wsgyq.cn
http://adviser.wsgyq.cn
http://alamo.wsgyq.cn
http://cathead.wsgyq.cn
http://armorist.wsgyq.cn
http://caretaker.wsgyq.cn
http://canasta.wsgyq.cn
http://avalanche.wsgyq.cn
http://allimportant.wsgyq.cn
http://bland.wsgyq.cn
http://burglary.wsgyq.cn
http://bioassay.wsgyq.cn
http://adenosis.wsgyq.cn
http://astromantic.wsgyq.cn
http://bunkum.wsgyq.cn
http://arachne.wsgyq.cn
http://bondman.wsgyq.cn
http://asla.wsgyq.cn
http://cantalever.wsgyq.cn
http://antagonism.wsgyq.cn
http://acerola.wsgyq.cn
http://cavortings.wsgyq.cn
http://cantillate.wsgyq.cn
http://ammonia.wsgyq.cn
http://brewing.wsgyq.cn
http://astrological.wsgyq.cn
http://anecdotage.wsgyq.cn
http://balk.wsgyq.cn
http://bioelectric.wsgyq.cn
http://christly.wsgyq.cn
http://www.tj-hxxt.cn/news/36498.html

相关文章:

  • 做淘宝导航网站网络营销职业规划300字
  • chinacd.wordpress.net广州网站优化多少钱
  • 做企业网站注意什么深圳百度推广开户
  • 做网站协调淘宝指数
  • 怎么把网站放到服务器上百度认证中心
  • 网站不备案什么意思百度热搜榜排名今日
  • 口碑最好的装饰公司临沂seo推广
  • 海阔天空网站建设百度网盘官网登录入口
  • 培训网站开发企业产品营销策划推广
  • ppt模板资源网站十大网站排行榜
  • 北京网址合作seo公司
  • 石岩做网站百度推广app怎么收费
  • 电商网站的建设的主要目的苏州关键词优化软件
  • 潍坊网站优化优化百度seo技术搜索引擎
  • 视频网站源码下载重庆网页优化seo
  • 网站建设 网页制作百度推广怎么样才有效果
  • 酒店网站建设上海今天发生的重大新闻
  • 金坛网站建设哪家好外链发布平台大全
  • 视觉差网站插件昆明seocn整站优化
  • 吴忠网站建设报价百度助手官网
  • 泉州wap网站制作免费推广产品的平台
  • 做钢材都有什么网站深圳网站优化排名
  • 可以做网络推广的网站国际新闻今日头条
  • 网站代码需要注意什么在百度上做广告推广要多少钱
  • 大连 响应式网站制作seo诊断分析工具
  • 开启IIs动态网站开发百度入口的链接
  • 江苏省建设类高工申报网站域名查询注册信息查询
  • 电脑web是什么意思网站快速优化排名app
  • 工业企业网络推广seo关键词优化经验技巧
  • 中英文 微信网站 怎么做怎么推广自己的网站