【问题标题】:How to inject data in custom annotation from RequestBody如何从 RequestBody 在自定义注解中注入数据
【发布时间】:2019-07-03 12:51:40
【问题描述】:

我创建了一个自定义注释和 HandlerInterceptorAdapter,它只会获取 memberNo 并将其打印出来。

@Target({ElementType.METHOD, ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface MyCustomAnnotation
{
    String memberNo();
}

在控制器上是这样的:

@MyCustomAnnotation(memberNo = "${someBodyObject.memberNo}")
@RequestMapping(value = "/test/", method = RequestMethod.GET)
public String test(@RequestBody SomeBodyObject someBodyObject) {
    System.out.println("--- TEST ---");
    return "-- FINISHED ---";
}

Request body SomeBodyObject 有一个文件,它是 memberNo.

如何将 RequestBody 中的 memberNo 注入到 HandlerInterceptorAdapter? 是否可以使用 Spring SpEL 或其他东西从 Body 获取数据并发送到 AnnotationResolver? 或者也许还有其他方法可以做到这一点?

我尝试这样,响应是:${token.memberNo} as a String

【问题讨论】:

    标签: java spring spring-boot spring-el


    【解决方案1】:

    这是不可能的。

    注解需要常量值并且方法参数是动态的。

    【讨论】:

    • 您好,感谢您的回答,但我认为情况并非如此,因为您可以在大量注释中使用 SpEL,例如来自 spring 文档:@Cacheable(cacheNames="books", key="#isbn") public Book findBook(ISBN isbn, boolean checkWarehouse, boolean includeUsed)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多