springboot入门十八,自定义注解的简单实现

     2022-04-01     532

关键词:

项目基本配置参考文章SpringBoot入门一,使用myEclipse新建一个SpringBoot项目,使用myEclipse新建一个SpringBoot项目即可,此示例springboot升级为2.2.1版本。

 

1. pom.xml添加aop支持

<!-- 引入aop切面支持 -->
<dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-aop</artifactId>
</dependency>

2. 创建自定义注解

package com.qfx.common.annotation;

import static java.lang.annotation.ElementType.METHOD;
import static java.lang.annotation.RetentionPolicy.RUNTIME;
import java.lang.annotation.Documented;
import java.lang.annotation.Retention;
import java.lang.annotation.Target;

@Documented
@Retention(RUNTIME)
@Target(METHOD)
public @interface LoginAnno {

}

元注解释义:
java.lang.annotation提供了四种元注解,专门注解其他的注解(在自定义注解的时候,需要使用到元注解):
@Documented –注解是否将包含在JavaDoc中
@Retention –什么时候使用该注解
@Target –注解用于什么地方
@Inherited – 是否允许子类继承该注解

 

3. 创建自定义注解解析

package com.qfx.common.annotation;

import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.aspectj.lang.annotation.Pointcut;
import org.springframework.stereotype.Component;

/**
 * <h5>描述:通过@Aspect注解使该类成为切面类</h5>
 */
@Aspect
@Component
public class LoginAnnoImpl {

    @Pointcut("@annotation(com.qfx.common.annotation.LoginAnno)")
    private void cut() {
    }

    /**
     * <h5>功能:前置通知</h5>
     */
    @Before("cut()")
    public void before() {
        System.out.println("自定义注解生效了");
    }
}

至此自定义注解就编写完毕了,下面来看看调用

4. 使用自定义注解

package com.qfx.common.controller;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import com.qfx.common.annotation.LoginAnno;

@RestController
@RequestMapping("login")
public class LoginController {

    @RequestMapping("reg")
    public String reg(String userName) {
        return "用户[" + userName +"]注册成功~!";
    }

    @RequestMapping("login")
    @LoginAnno
    public String login(String userName) {
        return "欢迎您:" + userName;
    }
}

技术图片

4. 完整项目结构

技术图片

springboot利用自定义注解实现aop

SpringBoot利用自定义注解实现AOPjava本文主要讲解利用SpringBoot的自定义注解来实现AOP思想。在开始所有的操作之前,需要导入aop坐标:<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-aop</ 查看详情

springboot自定义注解实现token校验

原文链接: https://blog.csdn.net/qq_33556185/article/details/105420205https://blog.csdn.net/weixin_43877725/article/details/1075546381.定义Token的注解,需要Token 查看详情

springboot自定义注解支持el表达式(基于methodbasedevaluationcontext实现)

参考技术A自定义DistributeExceptionHandler注解,该注解接收一个参数attachmentId。该注解用在方法上,使用该注解作为切点,实现标注该注解的方法抛异常后的统一处理。拦截DistributeExceptionHandler注解作为切点使用@AfterThrowing处理异常... 查看详情

springboot如何自定义自己的条件注解与自动配置?(代码片段)

SpringBoot的核心功能就是为整合第三方框架提供自动配置,而本文则带着大家实现了自己的自动配置和Starter,一旦真正掌握了本文的内容,就会对SpringBoot产生“一览众山小”的感觉。自定义条件注解在SpringBoot中,... 查看详情

springboot+redis实战-利用自定义注解+分布式锁实现接口幂等性

场景不管是传统行业还是互联网行业,我们都需要保证大部分操作是幂等性的,简单点说,就是无论用户点击多少次,操作多少遍,产生的结果都是一样的,是唯一的。而今次公司的项目里,又被我遇到了这么一个幂等性的问题... 查看详情

springboot自定义校验注解

参考技术A系统执行业务逻辑之前,会对输入数据进行校验,检测数据是否有效合法的。所以我们可能会写大量的ifelse等判断逻辑,特别是在不同方法出现相同的数据时,校验的逻辑代码会反复出现,导致代码冗余,阅读性和可... 查看详情

springboot的自定义注解功能实现类该怎么写?

我想做一个类属性上的注解,加了后会修改这个类里的方法,实现这个注解功能的类该怎么写?或者该继承什么接口?这个应该和lombok包的@Getter和@Setter的功能实现类一样的把,我在网上收到过用AOP切面实现的但是这是在方法上... 查看详情

springboot中关于自定义注解校验

参考技术A1.例如我想要校验某个入参是否是json字符串,假设我的自定义注解为@JSONStringAnnotation,并在某个bean中的customFields字段使用:2.新建注解接口类:3.新建具体的校验类:以上就完成了对一个字段的自定义注解校验,是不是... 查看详情

大聪明教你学java|springboot使用自定义注解实现操作日志的记录(代码片段)

...记录实现自定义注解我们还是先引入Maven依赖👇<!--SpringBoot拦截器--><dependency><groupId>org.springframework.boot</groupId><art 查看详情

springboot自定义formatter注解(代码片段)

...有对应的注解,下面我们自己来实现这个注解。本例基于springboot2.xjdk1.8首先,创建一个注解@Documented@Retention(Reten 查看详情

springboot验证表单数据并实现数据的自定义验证

参考技术A这里主要用的是hibernate.validator这个内置校验器,这个校验器看了下,能满足大多需求,新需求就自己开发->@MyConstraint这个验证的简单开发实例2.自定义验证业务逻辑的实现类:实现ConstraintValidator这个接口,重写isValid... 查看详情

springboot自定义注解+异步+观察者模式实现业务日志保存(代码片段)

...步,对应一般的管理系统还是可以的,小编最近在spring和springboot源码中看到有很多的监听处理贯穿前后:这就是著名的观察者模式!!二、基础环境项目这里小编就不带大家创建了,直接开始!!1.导入依赖小编这里的 查看详情

使用自定义注解简单实习orm框架的sql生成

使用自定义注解简单实习orm框架的sql生成​​背景​​​​代码​​​​我们先把架子搭出来​​​​自定义注解:table注解​​​​工具类​​​​查询条件使用自定义注解实现​​背景orm框架怎么生成的sql,我们给他一个实... 查看详情

springboot项目自定义注解实现的多数据源切换(代码片段)

一、主要依赖<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.1.4.RELEASE</version><relativePath/& 查看详情

springboot的自定义配置

参考技术ASpringBoot免除了项目中大部分的手动配置,对一些特定情况,我们可以通过修改全局配置文件以适应具体生产环境,可以说,几乎所有的配置都可以写在application.properties文件中,SpringBoot会自动加载全局配置文件,从而... 查看详情

springboot自动装配定义与自定义starter原理,及如何实现自定义装配

前言SpringBoot自动装配定义与自定义starter,基于约定大于配置的原则,实现Spring组件自动装配的目的。 装配的依赖(方式) 模式注解、@Enable模块、条件装配、工厂加载机制。激活自动化装配、实现自动化装配、配置自动... 查看详情

springboot自动装配定义与自定义starter原理,及如何实现自定义装配

前言SpringBoot自动装配定义与自定义starter,基于约定大于配置的原则,实现Spring组件自动装配的目的。 装配的依赖(方式) 模式注解、@Enable模块、条件装配、工厂加载机制。激活自动化装配、实现自动化装配、配置自动... 查看详情

springboot+session+注解实现简单的安全验证和权限管理(一)

参考技术A写在前面:本文一共分两个部分,第一个部通过注解+session的形式实现接口的安全验证,第二个部分实现通过注解的形式实现简单的权限管理。pom.xml文件application.properties2.0NotAuth注解类2.1MvcConfig.java2.2mybatis-plus配置mybatis... 查看详情