項目基本配置參考文章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; } }
4. 完整項目結構