1

AnnotationConfigWebApplicationContextrefresh()按照javadoc中的建议调用时的以下内容

NoSuchBeanDefinitionException: No qualifying bean of type 'x' 

Javadoc 用于:AnnotationConfigWebApplicationContext#register

请注意,必须调用 AnnotationConfigWebApplicationContext.refresh() 才能使上下文完全处理新类。

beanxrootContext. 没有调用refresh就没有错误,一切都自动接线并正确启动。

public class WebAppInitializer implements WebApplicationInitializer {

    @Override
    public void onStartup(ServletContext servletContext) throws ServletException {
        // Root context
        AnnotationConfigWebApplicationContext rootContext = new AnnotationConfigWebApplicationContext();
        rootContext.register(RootContext.class);
        rootContext.refresh();

        servletContext.addListener(new ContextLoaderListener(rootContext));

        // REST servlet
        AnnotationConfigWebApplicationContext restContext = new AnnotationConfigWebApplicationContext();
        restContext.register(RestConfig.class);
        restContext.refresh(); // <--------- Throws exception
        ServletRegistration.Dynamic restServlet = servletContext.addServlet("rest", new DispatcherServlet(restContext));
        restServlet.addMapping("/rest/");
    }
}

我错过了一些配置明智的东西吗?


编辑:

RestConfig基本上看起来像这样。

@Configuration
@EnableWebMvc
@ComponentScan(basePackages = "foo.bar")
public class RestConfig extends WebMvcConfigurerAdapter {
   @Autowired
   private X x;
}

编辑2:

没有证据表明在WebApplicationInitializerrefresh()的 javadoc中使用确实包含一个很好的示例。

4

0 回答 0