我正在尝试根据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…