国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

springboot aop 自定義注解形式

這篇具有很好參考價(jià)值的文章主要介紹了springboot aop 自定義注解形式。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

引入pom

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-aop</artifactId>
        </dependency>

自定義注解

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;


@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface Xxxano{
}

配置切面

import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Pointcut;
import org.aspectj.lang.reflect.MethodSignature;
import org.springframework.stereotype.Component;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;

import javax.servlet.http.HttpServletRequest;
import java.lang.reflect.Method;

@Aspect
@Component
@Slf4j
public class XxxanoAOP {
    @Autowired
    private BizService bizService;
    
    @Pointcut("execution(* com.xx.xxxx.controller..*Controller.*(..)) &&@annotation(com.xx.xxxx.aop.Xxxano)")
    public void pointcut() {
    }

    @Around("pointcut()")
    @SneakyThrows
    public Object arround(ProceedingJoinPoint pjp) {
        ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
        HttpServletRequest request = attributes.getRequest();

        MethodSignature signature = (MethodSignature) pjp.getSignature();
        Method method = signature.getMethod();
        String methodName = method.getName();
        Object[] args = pjp.getArgs();
        log.info("{}.{}  , param : {}"
                , method.getDeclaringClass().getName()
                , methodName
                , args);

                String head = request.getHeader("head");
              Xxxx x=  bizService.selectXxxxById(head);
              
		  //get傳值
		XxxxDTO attr = (XxxxDTO)request.getAttribute("attr");
        attr.setAaa("1111");
        request.setAttribute("attr",attr);
        
//post 傳值
        LinkedHashMap<String, Object> param = (LinkedHashMap<String, Object>) args[0];
        if (param.size() > 2) {
            return R.error("參數(shù)字段過多");
        }
        param.put("time", LocalDateTime.now().toString());
        Map<String,String> m = new HashMap<>();
        m.put("oooo","ooo1");
        param.put("obj",m);
                

//                todo: 加判斷邏輯
        return pjp.proceed(args);
    }
}

java控制層請求接收AOP設(shè)置的參數(shù)


	@Xxxano
    @GetMapping("/xxx/get")
    @ApiOperation("get請求方法")
    public AjaxResult xxxGet (
            @ApiParam(hidden = true) @RequestAttribute("attr") XxxxDTO xxxDTO
    ){

        return  AjaxResult.success();
    }

springboot aop 自定義注解形式,spring boot,后端,java文章來源地址http://www.zghlxwxcb.cn/news/detail-822116.html

	@Xxxano
    @PostMapping("/xxx/post")
    @ApiOperation("post請求")
    public AjaxResult xxxPost (
            @ApiParam(value ="{\"aaa\":\"AAA\",\"bbb\":\"BBB\"}",example = "{\"aaa\":\"AAA\",\"bbb\":\"BBB\"}")
            @RequestBody Map<String,Object> map){
        return  AjaxResult.success();
    }

到了這里,關(guān)于springboot aop 自定義注解形式的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • spring boot 使用AOP+自定義注解+反射實(shí)現(xiàn)操作日志記錄修改前數(shù)據(jù)和修改后對比數(shù)據(jù),并保存至日志表

    spring boot 使用AOP+自定義注解+反射實(shí)現(xiàn)操作日志記錄修改前數(shù)據(jù)和修改后對比數(shù)據(jù),并保存至日志表

    使用FieldMeta自定義注解,看個(gè)人業(yè)務(wù)自行覺得是否需要重新定義實(shí)體 實(shí)現(xiàn)類 :通過該實(shí)現(xiàn)類獲取更新前后的數(shù)據(jù)。 該實(shí)現(xiàn)類的實(shí)現(xiàn)原理為:獲取入?yún)⒊鋈氲膇d值,獲取sqlSessionFactory,通過sqlSessionFactory獲取selectByPrimaryKey()該方法,執(zhí)行該方法可獲取id對應(yīng)數(shù)據(jù)更新操作前后的數(shù)

    2024年01月23日
    瀏覽(28)
  • spring自定義注解+aop+@BindingParam

    2.1 聲明切面注解 ?2.1.1切面對應(yīng)枚舉 ?2.2 聲明綁定參數(shù)注解 4.1 ThreadLocalUtil? 4.2? 自定義異常

    2024年02月14日
    瀏覽(19)
  • 【Spring】使用自定義注解方式實(shí)現(xiàn)AOP鑒權(quán)

    AOP,是一種面向切面編程,可以通過預(yù)編譯方式和運(yùn)行期間動態(tài)代理實(shí)現(xiàn)程序功能的統(tǒng)一維護(hù)的一種技術(shù)。 在軟件開發(fā)中,鑒權(quán)(Authentication)是一項(xiàng)非常重要的安全措施,用于驗(yàn)證用戶身份和權(quán)限。在應(yīng)用程序中,我們通常會使用AOP(Aspect-Oriented Programming)來實(shí)現(xiàn)鑒權(quán)功能

    2024年02月11日
    瀏覽(20)
  • 【SpringBoot】AOP 自定義注解的使用詳解

    ? ? ? ? Spring 中的切面 Aspect,這是 Spring 的一大優(yōu)勢。面向切面編程往往讓我們的開發(fā)更加低耦合,也大大減少了代碼量,同時(shí)呢讓我們更專注于業(yè)務(wù)模塊的開發(fā),把那些與業(yè)務(wù)無關(guān)的東西提取出去,便于后期的維護(hù)和迭代。 ????????AOP 的全稱為 Aspect Oriented Programming,

    2024年02月05日
    瀏覽(26)
  • SpringBoot + 自定義注解 + AOP 打造通用開關(guān)

    SpringBoot + 自定義注解 + AOP 打造通用開關(guān)

    前言 最近在工作中遷移代碼的時(shí)候發(fā)現(xiàn)了以前自己寫的一個(gè)通用開關(guān)實(shí)現(xiàn),發(fā)現(xiàn)挺不錯(cuò),特地拿出來分享給大家。 為了有良好的演示效果,我特地重新建了一個(gè)項(xiàng)目,把核心代碼提煉出來加上了更多注釋說明,希望xdm喜歡。 案例 1、項(xiàng)目結(jié)構(gòu) 2、引入依賴 3、yml配置 連接Re

    2024年01月23日
    瀏覽(17)
  • SpringBoot+自定義注解+AOP高級玩法打造通用開關(guān)

    SpringBoot+自定義注解+AOP高級玩法打造通用開關(guān)

    1.項(xiàng)目結(jié)構(gòu) 2.引入依賴 3.yml配置 4.自定義注解 5.定義常量 6.AOP核心實(shí)現(xiàn) 7.使用注解 8.工具類 9.測試接口 10.Redis中把開關(guān)加上 11.啟動服務(wù) 將redis中開關(guān)置為1 歡迎大家積極留言交流學(xué)習(xí)心得,點(diǎn)贊的人最美麗!

    2024年02月07日
    瀏覽(19)
  • springboot自定義注解+aop+redis實(shí)現(xiàn)延時(shí)雙刪

    springboot自定義注解+aop+redis實(shí)現(xiàn)延時(shí)雙刪

    redis作為用的非常多的緩存數(shù)據(jù)庫,在多線程場景下,可能會出現(xiàn)數(shù)據(jù)庫與redis數(shù)據(jù)不一致的現(xiàn)象 數(shù)據(jù)不一致的現(xiàn)象:https://blog.csdn.net/m0_73700925/article/details/133447466 這里采用aop+redis來解決這個(gè)方法: 刪除緩存 更新數(shù)據(jù)庫 延時(shí)一定時(shí)間,比如500ms 刪除緩存 這里之所以要延時(shí)一

    2024年01月17日
    瀏覽(21)
  • spring-自定義AOP面向切面注解--統(tǒng)一切面處理-登陸信息采集

    spring-自定義AOP面向切面注解--統(tǒng)一切面處理-登陸信息采集

    2023華為OD統(tǒng)一考試(A+B卷)題庫清單-帶答案(持續(xù)更新)or2023年華為OD真題機(jī)考題庫大全-帶答案(持續(xù)更新) 1. 先寫一個(gè)登陸記錄注解(//記錄:XXX時(shí)間,XXX姓名,XX系統(tǒng),登錄成功) 2. 寫一個(gè)切面對注解進(jìn)行處理(業(yè)務(wù)邏輯處理,記錄登陸的信息) 3.寫一個(gè)登錄的控制類,

    2024年02月13日
    瀏覽(17)
  • 對接第三方接口鑒權(quán)(Spring Boot+Aop+注解實(shí)現(xiàn)Api接口簽名驗(yàn)證)

    對接第三方接口鑒權(quán)(Spring Boot+Aop+注解實(shí)現(xiàn)Api接口簽名驗(yàn)證)

    一個(gè)web系統(tǒng),從接口的使用范圍也可以分為對內(nèi)和對外兩種,對內(nèi)的接口主要限于一些我們內(nèi)部系統(tǒng)的調(diào)用,多是通過內(nèi)網(wǎng)進(jìn)行調(diào)用,往往不用考慮太復(fù)雜的鑒權(quán)操作。但是,對于對外的接口,我們就不得不重視這個(gè)問題,外部接口沒有做鑒權(quán)的操作就直接發(fā)布到互聯(lián)網(wǎng),而

    2024年04月29日
    瀏覽(133)
  • springboot3使用自定義注解+AOP+redis優(yōu)雅實(shí)現(xiàn)防重復(fù)提交

    springboot3使用自定義注解+AOP+redis優(yōu)雅實(shí)現(xiàn)防重復(fù)提交

    ? ??個(gè)人主頁:? ? ?蒾酒 ?? 系列專欄 :《spring boot實(shí)戰(zhàn)》 ?? 山高路遠(yuǎn),行路漫漫,終有歸途 目錄 寫在前面 實(shí)現(xiàn)思路 實(shí)現(xiàn)步驟 1.定義防重復(fù)提交注解 2.編寫一個(gè)切面去發(fā)現(xiàn)該注解然后執(zhí)行防重復(fù)提交邏輯 3.測試 依賴條件 1.接口上標(biāo)記防重復(fù)提交注解 2.接口測試 寫在最

    2024年04月11日
    瀏覽(21)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包