好奇,如果有人可以分享一些关于为什么HttpServletRequest可能没有从Spring Framework设置特定属性的反馈.我们正在使用HandlerMapping.BEST_MATCHING_PATTERN_ATTRIBUTE键入的属性.(https://docs.spring.io/spring-framework/docs/4.3.4.RELEASE/javadoc-api/org/springframework/web/servlet/HandlerMapping.html)
调用链后,示例代码位于OncePerRequestFilter.doFilterInternal()内.
protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain chain)
throws ServletException, IOException {
String path = (new UrlPathHelper()).getPathWithinApplication(request);
chain.doFilter(request, response);
String scrubbedPath = scrubPath(request, path);
}
private String scrubPath(HttpServletRequest request, String path) {
String message = "Response Metric Info";
String scrubbedPath = path;
Object bestMatchingPattern = request.getAttribute(HandlerMapping.BEST_MATCHING_PATTERN_ATTRIBUTE);
if (bestMatchingPattern != null) {
//This changes path from .../collection/{alias} to ../collection/alias
scrubbedPath = fixSpecialCharacters(bestMatchingPattern.toString());
} else {
// this is temporary to help with understanding why we get …Run Code Online (Sandbox Code Playgroud) 根据 Project Lombok 文档,lombok 依赖项应该是提供的范围 ( https://projectlombok.org/setup/maven )。该范围是否应该<dependencyManagement>在 spring-boot-dependencies pom.xml 中定义?
我花了最后一点时间尝试获取它,以便我使用@RabbitListener 注册的处理程序将使用 Jackson2JsonMessageConverter 转换消息。不幸的是,无论什么配置设置,我都只尝试使用 SimpleMessageConverter。
@Component
@Slf4j
public class TestQueueListener {
@RabbitListener(queues = "#{@allQueue}")
public void processMessage(String data) {
log.trace("Message received: {}", data);
}
@RabbitListener(queues = "#{@invokeQueue}")
public void processSpawnInstanceMessage(TestConfig config) {
log.trace("Invoking with config: {}", config);
invokeSomeMethod(config);
}
}
Run Code Online (Sandbox Code Playgroud)
这是我目前拥有的配置,我认为最接近记录的内容:
@Configuration
@EnableRabbit
public class MessagingConfiguration {
@Bean
public MessageConverter messageConverter() {
ContentTypeDelegatingMessageConverter messageConverter = new ContentTypeDelegatingMessageConverter();
messageConverter.addDelgate("application/json", new Jackson2JsonMessageConverter());
return messageConverter;
}
@Bean
public RabbitTemplate rabbitTemplate(ConnectionFactory connectionFactory, MessageConverter messageConverter) {
RabbitTemplate rabbitTemplate = new RabbitTemplate(connectionFactory);
rabbitTemplate.setMessageConverter(messageConverter);
return rabbitTemplate;
} …Run Code Online (Sandbox Code Playgroud)