首页 > 系统相关 >学习aop以及nginx

学习aop以及nginx

时间:2023-09-01 15:06:39浏览次数:43  
标签:aop sky entity 学习 nginx org import com annotation

苍穹外卖第一天 搭建前端后端环境 先将代码提交到本地 然后在git上创建仓库 https://gitee.com/lh03062021/sky-take-out.git 点击push 定义远程仓库 把复制好的粘贴上去 就可以推送成功了。 导入sql文件,编译父项目

  1. nginx反向代理,将前端发送的动态请求由nginx转发到后端服务器 好处:负载均衡,提高访问速度,保证后端服务安全 image.png image.png

2.完善登录功能,修改明文密码,改成md5加密(不能解密)

3.使用swagger image.png 2.配置类加入配置 3.设置静态资源映射,否则接口文档页面无法访问 package com.sky.config;

import com.sky.interceptor.JwtTokenAdminInterceptor; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.InterceptorRegistry; import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport; import springfox.documentation.builders.ApiInfoBuilder; import springfox.documentation.builders.PathSelectors; import springfox.documentation.builders.RequestHandlerSelectors; import springfox.documentation.service.ApiInfo; import springfox.documentation.spi.DocumentationType; import springfox.documentation.spring.web.plugins.Docket;

/**

  • 配置类,注册web层相关组件 */ @Configuration @Slf4j public class WebMvcConfiguration extends WebMvcConfigurationSupport {

    @Autowired private JwtTokenAdminInterceptor jwtTokenAdminInterceptor; /**

    • 通过knife4j生成接口文档
    • @return */ @Bean public Docket docket() { ApiInfo apiInfo = new ApiInfoBuilder() .title("苍穹外卖项目接口文档") .version("2.0") .description("苍穹外卖项目接口文档") .build(); Docket docket = new Docket(DocumentationType.SWAGGER_2) .apiInfo(apiInfo) .select() .apis(RequestHandlerSelectors.basePackage("com.sky.controller")) .paths(PathSelectors.any()) .build(); return docket; }

    /**

    • 设置静态资源映射
    • @param registry */ @Override protected void addResourceHandlers(ResourceHandlerRegistry registry) { registry.addResourceHandler("/doc.html").addResourceLocations("classpath:/META-INF/resources/"); registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/"); } }

image.png

## - 32集 自定义注解开发,在工作中经常用到insertid,inserttime,updateid,updatetime

  1. 创建枚举型数据 insert或update
/**
 * 数据库操作类型
 */
public enum OperationType {

    /**
     * 更新操作
     */
    UPDATE,

    /**
     * 插入操作
     */
    INSERT

}

@Target:用于描述注解的使用范围 @Rention:表示需要在什么什么级别保存该注释信息,用于描述注解的生命周期。(source<class<runtime) 2.创建注解接口类

@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface AutoFill {
 //只有数据库更新和插入操作
    OperationType value();

}

3.创建aspect

package com.sky.aspect;


import com.sky.anocation.AutoFill;
import com.sky.constant.AutoFillConstant;
import com.sky.context.BaseContext;
import com.sky.entity.Employee;
import com.sky.enumeration.OperationType;
import lombok.extern.slf4j.Slf4j;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.Signature;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.aspectj.lang.annotation.Pointcut;
import org.aspectj.lang.reflect.MethodSignature;
import org.springframework.stereotype.Component;

import java.lang.annotation.Annotation;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * @author DHC
 */
@Aspect
@Component
@Slf4j
public class AutoFillAspect {


    //定义切点
    @Pointcut("execution(* com.sky.mapper.*.*(..)) && @annotation(com.sky.anocation.AutoFill)")
    public void PointCut() {

    }

    @Before("PointCut()")
    public void autoFill(JoinPoint joinPoint) {
        log.info("开始进行公共字段填充...");
        MethodSignature signature = (MethodSignature) joinPoint.getSignature();
        AutoFill autoFill = signature.getMethod().getAnnotation(AutoFill.class);
        OperationType operationType = autoFill.value(); //获得数据库操作类型


        Object[] args = joinPoint.getArgs();
        if (args == null || args.length==0) {
          return ;
        }

        Object entity = args[0];
        Long currentId= BaseContext.getCurrentId();
        SimpleDateFormat simpleDateFormat= new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        Date a =new Date();
        String s = simpleDateFormat.format(a);

        if(operationType == OperationType.INSERT){
            try {
                Method setCreateTime = entity.getClass().getDeclaredMethod(AutoFillConstant.SET_CREATE_TIME, String.class);
                Method insertId = entity.getClass().getDeclaredMethod(AutoFillConstant.SET_CREATE_USER, Long.class);
                Method updateTime = entity.getClass().getDeclaredMethod(AutoFillConstant.SET_UPDATE_TIME, String.class);
                Method updateId = entity.getClass().getDeclaredMethod(AutoFillConstant.SET_UPDATE_USER, Long.class);

                setCreateTime.invoke(entity,s);
                insertId.invoke(entity,currentId);
                updateTime.invoke(entity,s);
                updateId.invoke(entity,currentId);

            } catch (Exception e) {
                e.printStackTrace();
            }

        }else if(operationType == OperationType.UPDATE){
            try {
                Method updateTime = entity.getClass().getDeclaredMethod(AutoFillConstant.SET_UPDATE_TIME, String.class);
                Method updateId = entity.getClass().getDeclaredMethod(AutoFillConstant.SET_UPDATE_USER, Long.class);
                updateTime.invoke(entity,s);
                updateId.invoke(entity,currentId);
            } catch (Exception e) {
                e.printStackTrace();
            }

        }

    }


}

标签:aop,sky,entity,学习,nginx,org,import,com,annotation
From: https://blog.51cto.com/u_15903462/7322660

相关文章

  • 不再受限于学历!学习华为认证,实现财富与事业双丰收!
    学习华为认证会有哪些疑问呢?学习华为技术方向不知从哪开始有什么学习的推荐思路呢?可以看看我接下来的讲解1.确定认证项目你需要确定你想要获得哪个华为认证项目的认证。华为认证包括多个领域,如网络、云计算、存储等。选择一个你感兴趣且适合你职业发展的项目。主要还是以HCIE、HCIP......
  • Python-3.10.5学习笔记
     Linux系统-部署-运维系列导航pip源初始化pipconfigsetglobal.index-urlhttps://pypi.tuna.tsinghua.edu.cn/simplepipconfigsetinstall.trusted-hostpypi.tuna.tsinghua.edu.cn VSCode插件安装语法检查flake8代码格式化yapf文件及文件夹图标vscode-icon......
  • Python 深度学习目标检测评价指标
    ✅作者简介:热爱科研的算法开发者,Python、Matlab项目可交流、沟通、学习。......
  • 三河凡科科技飞讯教学篇:学习振弦采集模块的开发基本原理
    三河凡科科技飞讯教学篇:学习振弦采集模块的开发基本原理振弦采集模块是一种用于测量物体振动、形变、压力等物理量的电子设备。它通过测量物体的振动变化,可以得出物体在不同条件下的动态特性,对于工程设计、科学研究、医学检测等领域都有广泛应用。本文将介绍振弦采集模块的开发基......
  • 幼儿英语学习APP的设计与实现-计算机毕业设计源码+LW文档
    一、选题的目的和意义: 目的:本文研究的目的就是通过幼儿英语学习移动APP的开发,解决幼儿启蒙英语在线学习的问题,为幼儿建立学习兴趣和习惯。同时,帮助幼儿启蒙老师提高管理效率,通过平台可以快速的发布教学视频内容。意义:开发幼儿英语学习APP,使幼儿英语学习的方式和内容越来越多样化......
  • nginx--添加stream模块
    使用的是openEuler22.03(LTS-SP2)系统,yum源选择清华大学的源清楚yum缓存后重新加载,nginx版本变成1.23.2[[email protected]]#yuminfonginxLastmetadataexpirationcheck:0:21:11agoonFri01Sep202310:29:45AMCST.InstalledPackagesName:......
  • yum源的选择--nginx篇
    使用的是openEuler22.03(LTS-SP2)系统yum源选择清华大学的源https://mirrors.tuna.tsinghua.edu.cn/openeuler/查看各个版本yum源中的需要软件的版本,如下,https://mirrors.tuna.tsinghua.edu.cn/openeuler/openEuler-22.03-LTS-SP2/everything/x86_64/Packages/软件包中查看......
  • 学习资料
    SqlSugar官网   ORM之SqlSugar  SqlSugar使用  SqlSugar入门   文章分类SqlSugarUni-App官网   NLog组件  Nlog非常详细  Net6-Nlog配置文件解读  NLog配置  NET使用NLog增强日志输出C#并行和多线程编程Parallel......
  • Nginx优化
    目录1.event事件2.http设置1.1自定义图标1.24041.3mime1.4server下的root[root@localhost~]#cd/opt/[root@localhostopt]#lsnginx-1.18.0nginx-1.18.0.tar.gz[root@localhostopt]#date+%F2023-08-28[root@localhostopt]#touch`date+%F`-access.log[root@lo......
  • 迁移学习(CLDA)《CLDA: Contrastive Learning for Semi-Supervised Domain Adaptation》
    Note:[wechat:Y466551|可加勿骚扰,付费咨询]论文信息论文标题:CLDA:ContrastiveLearningforSemi-SupervisedDomainAdaptation论文作者:AnkitSingh论文来源:NeurIPS2021论文地址:download 论文代码:download视屏讲解:click1简介动机:半监督导致来自标记源和目标样本的......