日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網(wǎng)為廣大站長(zhǎng)提供免費(fèi)收錄網(wǎng)站服務(wù),提交前請(qǐng)做好本站友鏈:【 網(wǎng)站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(wù)(50元/站),

點(diǎn)擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會(huì)員:747

一般來說,注解只能配置常量,在一些構(gòu)架的開發(fā)中,有時(shí)候我們需要給注解動(dòng)態(tài)配置一些值,或者想從配置文件中讀取配置。直接在注解上配置是無法實(shí)現(xiàn)的,但是我們可以在拿到注解的值之后,再對(duì)這些值進(jìn)行另外的操作。比如在注解上面配置占位符,在使用的時(shí)候,再對(duì)這些占位符進(jìn)行替換。這一塊其實(shí)SpringBoot已經(jīng)幫我們實(shí)現(xiàn)了,拿來即用就行。

實(shí)現(xiàn)方式:

一、動(dòng)態(tài)設(shè)置類上的注解值

1.1 準(zhǔn)備工作

本地服務(wù)端口:8081,工具:IDEA

在Application.properties中新增一條配置信息,如:

service.api.url=/xxService/api

1.2 代碼如下:

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.env.Environment;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import JAVAx.annotation.PostConstruct;

/**
 * @description:
 * @author: xx
 * @create: 2021-05-18 14:28:36
 **/
@RestController
@RequestMapping(value = "${service.api.url}", name = "類上動(dòng)態(tài)參數(shù)設(shè)置")
public class DemoController {
    @Autowired
    private Environment environment;

    /**
     * 動(dòng)態(tài)設(shè)置類上的注解的參數(shù)值
     * @throws NoSuchMethodException
     */
    @PostConstruct
    public void init() throws NoSuchMethodException {
        RequestMapping mapping = this.getClass().getAnnotation(RequestMapping.class);
        // 獲取參數(shù)值
        String value = environment.resolvePlaceholders(mapping.value()[0]);
        String name = environment.resolvePlaceholders(mapping.name());

        // 輸出
        System.out.println("value-------->" + value);
        System.out.println("name-------->" + name);
    }

    /**
     * 測(cè)試方法
     */
    @PostMapping(value = "save")
    public void save() {
        System.out.println("我已經(jīng)進(jìn)入save()方法。。。。。。。。。。。");
    }
}

啟動(dòng)服務(wù),可以看到控制臺(tái)輸出:

value-------->/xxService/api
name-------->類上動(dòng)態(tài)參數(shù)設(shè)置

如圖:

Springboot 動(dòng)態(tài)設(shè)置注解參數(shù)值

控制臺(tái)輸出

說明已經(jīng)獲取到配置文件的值,此時(shí),我們通過訪問接口:

http://127.0.0.1:8081/xxService/api/save

看一下是否能訪問,目的是為了確認(rèn)類上的注解是否動(dòng)態(tài)設(shè)置值成功。

Springboot 動(dòng)態(tài)設(shè)置注解參數(shù)值

postman請(qǐng)求測(cè)試結(jié)果


Springboot 動(dòng)態(tài)設(shè)置注解參數(shù)值

控制臺(tái)打印

可以看到,確實(shí)請(qǐng)求成功了,說明類上的注解動(dòng)態(tài)參數(shù)設(shè)置確實(shí)是成功了。

二、方法上的注解動(dòng)態(tài)參數(shù)設(shè)置

2.1 準(zhǔn)備工作

在application.properties中新增一條配置信息,如:

service.api.url.method=/save

2.2 代碼如下:

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.env.Environment;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;

import javax.annotation.PostConstruct;

/**
 * @description:
 * @author: xx
 * @create: 2021-05-18 14:28:36
 **/
@RestController
@RequestMapping(value = "/xxService/api")
public class DemoController {
    @Autowired
    private Environment environment;

    /**
     * 動(dòng)態(tài)設(shè)置方法上的注解的參數(shù)值
     * @throws NoSuchMethodException
     */
    @PostConstruct
    public void init() throws NoSuchMethodException {
        RequestMapping mapping = this.getClass().getMethod("save").getAnnotation(RequestMapping.class);
        // 獲取參數(shù)值
        String value = environment.resolvePlaceholders(mapping.value()[0]);
        String name = environment.resolvePlaceholders(mapping.name());

        // 輸出
        System.out.println("value-------->" + value);
        System.out.println("name-------->" + name);
    }

    /**
     * 測(cè)試方法
     */
    @RequestMapping(value = "${service.api.url.method}", name = "方法上動(dòng)態(tài)參數(shù)設(shè)置", method = RequestMethod.POST)
    public String save() {
        System.out.println("我已經(jīng)進(jìn)入save()方法。。。。。。。。。。。");

        return "再次請(qǐng)求成功!";
    }
}

啟動(dòng)服務(wù),可以看到控制臺(tái)輸出:

value-------->/save
name-------->方法上動(dòng)態(tài)參數(shù)設(shè)置

如圖:

Springboot 動(dòng)態(tài)設(shè)置注解參數(shù)值

控制臺(tái)打印

說明已經(jīng)獲取到配置文件的值,此時(shí),我們通過訪問接口:

http://127.0.0.1:8081/xxService/api/save

看一下是否能訪問,目的是為了確認(rèn)方法上的注解是否動(dòng)態(tài)設(shè)置參數(shù)值成功。

Springboot 動(dòng)態(tài)設(shè)置注解參數(shù)值

 


Springboot 動(dòng)態(tài)設(shè)置注解參數(shù)值

postman請(qǐng)求測(cè)試

可以看到,確實(shí)請(qǐng)求成功了,說明類上的注解動(dòng)態(tài)參數(shù)值設(shè)置確實(shí)是成功了。

三、特殊情況

如果遇到按照上面代碼,最后沒有效果的情況,可以加一行代碼:

// 新增一行代碼

mapping.consumes();

如圖:

Springboot 動(dòng)態(tài)設(shè)置注解參數(shù)值

新增一行代碼

分享到:
標(biāo)簽:Springboot
用戶無頭像

網(wǎng)友整理

注冊(cè)時(shí)間:

網(wǎng)站:5 個(gè)   小程序:0 個(gè)  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會(huì)員

趕快注冊(cè)賬號(hào),推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨(dú)大挑戰(zhàn)2018-06-03

數(shù)獨(dú)一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學(xué)四六

運(yùn)動(dòng)步數(shù)有氧達(dá)人2018-06-03

記錄運(yùn)動(dòng)步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績(jī)?cè)u(píng)定2018-06-03

通用課目體育訓(xùn)練成績(jī)?cè)u(píng)定