SpringBoot入門十八,自定義註解的簡單實現

項目基本配置參考文章SpringBoot入門一,使用myEclipse新建一個SpringBoot項目,使用myEclipse新建一個SpringBoot項目便可,此示例springboot升級爲2.2.1版本。java

 

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 – 是否容許子類繼承該註解web

 

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;
    }
}

SpringBoot入門十八,自定義註解的簡單實現

4. 完整項目結構

SpringBoot入門十八,自定義註解的簡單實現

相關文章
相關標籤/搜索