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

项目基本配置参考文章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. 完整项目结构

原文地址:https://blog.51cto.com/1197822/2449700

时间: 2024-12-29 23:57:42

SpringBoot入门十八,自定义注解的简单实现的相关文章

[WebGL入门]十八,利用索引缓存来绘图

注:文章译自http://wgld.org/,原作者杉本雅広(doxas),文章中如果有我的额外说明,我会加上[lufy:],另外,鄙人webgl研究还不够深入,一些专业词语,如果翻译有误,欢迎大家指正. 本次的demo的运行结果 对应复杂的模型 上次,通过操作模型坐标变换矩阵,实现了多个模型的移动,旋转和放大缩小.但是,渲染的依然是简单的三角形,是个构造及其简单的模型.但是实际中,用WebGL来绘制一个简单的三角形的机会是很少见的.至少是个四角多边形吧,通常会是更复杂的模型.伴随着模型的复杂化

攻城狮在路上(叁)Linux(十八)--- 文件系统的简单操作

本篇仅作为补漏. 一.查看磁盘和目录的容量:df  du df:列出文件系统的整体磁盘使用量. du:评估文件系统的磁盘使用量(常用于评估目录所占容量) 二.连接文件:ln 1.hard link:硬连接或实际连接 ln /etc/crontab crontab1; <== 创建硬连接 硬连接不创建文件(虽然使用ls命令时可以看到一个新的文件,但是两者的inode一致),仅是在目录block中增加一个文件名-inode的映射而已. 限制: A.不能跨文件系统. B.不能连接到目录(因为复杂度较高

开源纯C日志函数库iLOG3快速入门(八、如果你喜欢简单日志函数甚于日志函数库)

很多网友来信坚持表达了在项目中应使用简单日志函数,而不喜欢日志函数库,我与之反复争论无果,不过话说回来,我也喜欢短小轻快的日志函数库,而不是融入太多功能的臃肿库,比如日志转档我还是坚持用外部shell来实现会更好,这样的日志函数库既可以小很多,也可以更轻快稳定,我只是迫于另外一批功能控网友的"威胁"而加入了太多的功能,他们喜欢极端的一揽子解决方案,并且展示其它诸如log4c也实现了这些功能为由证明他们是正确的,如果我不实现就免谈. 最近在研发一个小型的应用服务器平台tcpdaemon,

SpringBoot入门十九,简单文件上传

项目基本配置参考SpringBoot入门一,使用myEclipse新建一个SpringBoot项目,使用myEclipse新建一个SpringBoot项目即可.现在来给项目添加一个MyBatis支持,添加方式非常简单,仅需两步即可,具体内容如下: 1. pom.xml添加以下配置信息 <!-- 文件上传配置开始 --> <!-- 9.引入commons-io依赖 --> <dependency> <groupId>commons-io</groupId

自定义注解的简单使用

    框架开发时不免会涉及到配置文件,如properties.xml以及txt等格式的文件.这里介绍框架中通过自定义注解的形式简化配置: 根据需求编写自定义注解中的属性(这里以JDBCConfig为例,这是一个注入数据库常用配置的注解类) @Target是java的元注解(即修饰注解的注解),这里的@Target({METHOD,TYPE})指可以修饰方法.描述类.接口(包括注解类型) 或enum声明. @Retention是java中的运行时注解,可以划分为三类   1.RetentionP

springboot通过AOP和自定义注解实现权限校验

自定义注解 PermissionCheck: package com.mgdd.sys.annotation; import java.lang.annotation.*; /** * @author LWW * @site www.lww.com * @company * @create 2019-12-16 14:08 */ // 标注这个类它可以标注的位置 @Target({ElementType.METHOD,ElementType.ANNOTATION_TYPE}) // 标注这个注解

SpringBoot入门十,添加junit单元测试

SpringBoot使用junit非常简单,我们来看一下,首先说明,这里使用的是springboot2.0.4的版本 一.pom.xml文件开启springboot测试包 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope>

SpringBoot入门十 ,获取配置文件信息

SpringBoot获取配置文件的信息有很多,这里介绍比较常用的三种方式 默认获取的都是application.properties文件中的信息 1.application.properties配置文件内容如下: server.port=80 spring.mvc.view.prefix=/jsp/ spring.mvc.view.suffix=.jsp #中文需要转换成为ASCII码,否则取值的时候是乱码 #张三 demo.userName=\u5F20\u4E09 demo.userAge=

SpringBoot入门 (十二) 定时任务

本文记录在SpringBoot中使用定时任务. 在我们的项目中,经常需要用到定时任务去帮我们做一些事情,比如服务状态监控,业务数据状态的更改等,SpringBoot中实现定时任务有2中方案,一种是自带的,我们只需要加上注解即可:另一种是集成Quartz来实现定时任务. 一 SpringBoot 提供的定时任务 在SpringBoot的starter包中已经提供了对定时任务的支持,我们很容易实现定时任务.修改pom.xml文件,加入如下内容,引入依赖: <dependency> <grou