Spring MVC:如何获取请求的处理程序方法 - java

我正在尝试根据Spring @RequestMapping注释方法上存在的注释实现一些逻辑。

因此,我的方法中有一个HttpServletRequest实例,我想问一下spring“给我一个方法,该方法将被调用以处理此请求”,因此我可以使用反射API来询问是否存在我的注释,因此我可以更改处理。

有什么简单的方法可以从Spring MVC获取此信息?

java大神给出的解决方案

我想您有一个类似的处理程序方法:

@SomeAnnotation
@RequestMapping(...)
public Something doHandle(...) { ... }

您想为所有使用@SomeAnnotation注释的处理程序方法添加一些预处理逻辑。您可以实施HandlerInterceptor并将您的预处理逻辑放入preHandle方法中,而不是您提出的方法:

public class SomeLogicInterceptor extends HandlerInterceptorAdapter {
    @Override
    public boolean preHandle(HttpServletRequest request, 
                             HttpServletResponse response, 
                             Object handler) throws Exception {

        if (handler instanceof HandlerMethod) {
            HandlerMethod handlerMethod = (HandlerMethod) handler;
            SomeAnnotation someAnnotation = handlerMethod.getMethodAnnotation(SomeAnnotation.class);
            if (someAnnotation != null) {
                // Put your logic here
            }
        }

        return true; // return false if you want to abort the execution chain
    }
}

另外,不要忘记在您的Web配置中注册拦截器:

@Configuration
public class WebConfig extends WebMvcConfigurerAdapter {
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(new SomeLogicInterceptor());
    }
}

Spring Boot如何在POST之后返回响应 - java

我想创建一个新客户并在创建客户后返回客户编号。客户编号必须是从50000开始的自动递增的唯一编号。到目前为止,我已经成功创建了一个客户,但是我不确定应该如何生成客户编号,将其保存到数据库中,并在触发POST时将其作为成功消息显示给用户。json下面是所需的响应;{ "customerNumber": "50002", …

在Spring Boot中如何在WebSSOProfileConsumerImpl中设置responseSkew属性值 - java

我正在尝试将SAML OKTA集成到春季启动应用程序中。我需要在Spring Boot中使用以下bean设置:谁能帮我在Spring Boot的webSSOprofileConsumer bean中设置responseSkew属性。我只需要上面在基于注解的Spring Boot注入中提到的xml配置的等效Spring注入技术。我已经通过链接了:http://…

在Spring Kafka中,我需要在应用程序中添加@EnableKafka批注吗? - java

我看到有人在他们的Spring Boot应用程序中添加@EnableKafka,我想知道为什么。我有一个工作的春季靴kafka生产者和使用者,并且没有使用@EnableKafka。那么,为什么人们需要显式添加它?谢谢。 java大神给出的解决方案 这是因为Spring Boot通过KafkaAutoConfiguration类(javadoc)为Kafka提…

java:继承 - java

有哪些替代继承的方法? java大神给出的解决方案 有效的Java:偏重于继承而不是继承。 (这实际上也来自“四人帮”)。他提出的理由是,如果扩展类未明确设计为继承,则继承会引起很多不正常的副作用。例如,对super.someMethod()的任何调用都可以引导您通过未知代码的意外路径。取而代之的是,持有对本来应该扩展的类的引用,然后委托给它。这是与Eric…

使用Spring的HandlerInterceptor发送错误导致406(不可接受)响应 - java

我正在尝试使用Spring的HandlerInterceptorAdapter处理为以下其余端点计划维护的应用程序:因此,我通过扩展/api/authentication创建了一个拦截器:public class MigrationStateInterceptor extends HandlerInterceptorAdapter { @Override p…