gpt4 book ai didi

java - Spring Boot 应用程序中注入(inject)的 Spring Bean 为 NULL

转载 作者:行者123 更新时间:2023-12-02 12:12:26 25 4
gpt4 key购买 nike

我正在使用 Spring Boot(1.5.3) 开发 REST Web 服务。为了对传入请求采取一些操作,我添加了一个拦截器,如下所示。

@Component
public class RequestInterceptor extends HandlerInterceptorAdapter {

@Autowired
RequestParser requestParser;


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

//HandlerMethod handlerMethod = (HandlerMethod) handler;
requestParser.parse(request);
return true;
}
}

RequestInterceptor 有一个 Autowiring 的 Spring Bean RequestParser 负责解析请求。

@Component
public class RequestParserDefault implements RequestParser {

@Override
public void parse(HttpServletRequest request) {

System.out.println("Parsing incomeing request");
}

}

拦截器注册

@Configuration  
public class WebMvcConfig extends WebMvcConfigurerAdapter {

@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new RequestInterceptor()).addPathPatterns("/usermanagement/v1/**");
}
}

以及我的 Spring Boot 应用程序

@SpringBootApplication
public class SpringBootApp {

public static void main(String[] args) {
SpringApplication.run(SpringBootApp.class, args);

}
}

现在,当请求传入时,它会到达 RequestInterceptorpreHandle 方法,但 RequestParser 为 NULL。如果我从 RequestParser 中删除 @Component 注释,我会在 Spring 上下文初始化期间收到错误 No bean found of type RequestParser。这意味着 RequestParser 在 Spring 上下文中注册为 Spring bean,但为什么它在注入(inject)时为 NULL?有什么建议么?

最佳答案

您的问题在于这个新的RequestInterceptor()。重写您的 WebMvcConfig 以注入(inject)它,例如像这样:

@Configuration  
public class WebMvcConfig extends WebMvcConfigurerAdapter {

@Autowired
private RequestInterceptor requestInterceptor;

@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(requestInterceptor)
.addPathPatterns("/usermanagement/v1/**");
}
}

关于java - Spring Boot 应用程序中注入(inject)的 Spring Bean 为 NULL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46439567/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com