Spring boot 未保留带有@PostConstruct-@自动连线的Spring引导侦听器

Spring boot 未保留带有@PostConstruct-@自动连线的Spring引导侦听器,spring-boot,Spring Boot,问题的正确答案:我的@Autowired数据和我在@PostConstruct方法中设置的任何内容都不会保留。在这种情况下,我可能误解了bean生命周期 这是我的班级: @Component public class HeaderInspector implements HandlerInterceptorAdapter { private static final Logger LOGGER = LoggerFactory.getLogger(HeaderInspector.class);

问题的正确答案:我的
@Autowired
数据和我在
@PostConstruct
方法中设置的任何内容都不会保留。在这种情况下,我可能误解了bean生命周期

这是我的班级:

@Component
public class HeaderInspector implements HandlerInterceptorAdapter {
  private static final Logger LOGGER = LoggerFactory.getLogger(HeaderInspector.class);

  @Autowired
  private ConfigurationService configuration;

  @Autowired
  private WaffleHeaderService waffleHeader;

  private String logPrefix;

  @PostConstruct
  public void init() {
    logPrefix = configuration.getLogPrefix("WaffleHeader");
  }

  @Override
  public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
    // logs:  "null Intercept"
    LOGGER.trace(logPrefix + " Intercept");

    // !!! NullPointException !!!
    return waffleHeader.accept(request);
  }
}

我用注释标记了两个问题区域。

5美分:
@Autowired
属性不能为
null
。。。只有在您自己构造实例(这使它们成为非spring管理的bean)或在未启用注释处理的上下文中使用它们时,它们才能为
null
。一般来说,这是2个问题中的第一个,因为它不是一个spring管理的bean。我猜您有一个
WebMVCConfigureAdapter
重写了
addInterceptors
方法,并在该方法中执行
注册表。addInterceptor(new HeaderInspector())
。5美分:
@Autowired
属性不能为
null
。。。只有在您自己构造实例(这使它们成为非spring管理的bean)或在未启用注释处理的上下文中使用它们时,它们才能为
null
。一般来说,这是2个问题中的第一个,因为它不是一个spring管理的bean。我猜您有一个
WebMVCConfigureAdapter
重写了
addInterceptors
方法,并在该方法中执行
registry.addInterceptor(new HeaderInspector())