Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring boot web-Autowire bean转换为XML定义的bean为空_Spring_Spring Boot - Fatal编程技术网

Spring boot web-Autowire bean转换为XML定义的bean为空

Spring boot web-Autowire bean转换为XML定义的bean为空,spring,spring-boot,Spring,Spring Boot,我正在将现有的基于Spring3.1的web应用程序转换为SpringBoot1.2.5。我最初将我的旧应用程序升级到Spring 4.1.7 旧应用程序使用web.xml中的init参数contextConfigLocation导入了许多XMLBean配置文件。在新的Spring boot应用程序中,这些xml是使用主类中的@ImportResource导入的 当我启动应用程序时,我可以看到基于xml的bean是用自动连接字段null创建的。当我调试bean创建部分时,它看起来好像还没有将Au

我正在将现有的基于Spring3.1的web应用程序转换为SpringBoot1.2.5。我最初将我的旧应用程序升级到Spring 4.1.7

旧应用程序使用
web.xml
中的init参数
contextConfigLocation
导入了许多XMLBean配置文件。在新的Spring boot应用程序中,这些xml是使用主类中的
@ImportResource
导入的

当我启动应用程序时,我可以看到基于xml的bean是用自动连接字段
null
创建的。当我调试bean创建部分时,它看起来好像还没有将
AutowiredNotationBeanPostProcessor
添加到beanfactory中。但是xml包含
,它假设要添加
AutowiredNotationBeanPostProcessor
。而且,在创建基于xml的bean之后,会立即添加此后处理器

许多bean依赖项是xml定义bean中的自动连接bean

示例xml配置:

<context:annotation-config/>
<context:component-scan base-package="x.y.z"/>
<bean id="discoveredResourceClasses" factory-bean="resourceManager" factory-method="getResourceClasses">
    <constructor-arg>
        <list>
            <value>x.y.z.resources</value>
        </list>
    </constructor-arg>
</bean>
}


创建
resourceManager
bean时,字段
extensionManager
显示为
null
。因此,工厂方法(getResourceClasses)抛出
NullPointerException

当Spring没有开始构建应用程序上下文时,您需要在Begging提供xml配置文件的路径。在许多后处理程序已经注册之后,在这个过程的中间处理@导入资源注释。 您需要使用SpringApplicationBuilder.sources方法提供xml配置的路径

@SpringBootApplication
public class Application extends SpringBootServletInitializer {

@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
    return builder.sources("classpath:/WEB-INF/context/payables-profile.xml", Application.class);
}

当Spring没有开始构建应用程序上下文时,您需要在beggining提供xml配置文件的路径。在许多后处理程序已经注册之后,在这个过程的中间处理@导入资源注释。 您需要使用SpringApplicationBuilder.sources方法提供xml配置的路径

@SpringBootApplication
public class Application extends SpringBootServletInitializer {

@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
    return builder.sources("classpath:/WEB-INF/context/payables-profile.xml", Application.class);
}

发布你的主要课程。SpringBoot应该已经为您注册了处理器,以便您可以从XML中删除该行。看起来你在主课上做错了什么。另外,请阅读并展开您的问题。将您调用该方法的类张贴在其中。使用更多信息更新我的问题。首先
已经暗示
。第二次Spring引导使用默认情况下启用注释的应用程序上下文。要尝试的一件事是删除theo
,因为我必须从jar中扫描特定的包,所以我必须使用Post-your主类。SpringBoot应该已经为您注册了处理器,以便您可以从XML中删除该行。看起来你在主课上做错了什么。另外,请阅读并展开您的问题。将您调用该方法的类张贴在其中。使用更多信息更新我的问题。首先
已经暗示
。第二次Spring引导使用默认情况下启用注释的应用程序上下文。要尝试的一件事是删除theo
,因为我必须从jar中扫描特定的包,所以我必须使用
@ImportResource("classpath*:xad-config-all.xml")
@SpringBootApplication
public class Application extends SpringBootServletInitializer {

   @Override
   protected SpringApplicationBuilder configure(SpringApplicationBuilder              application) {
    return application.sources(Application.class);
   }

   public static void main(String[] args) {
      SpringApplication.run(Application.class, args);
   }
@SpringBootApplication
public class Application extends SpringBootServletInitializer {

@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
    return builder.sources("classpath:/WEB-INF/context/payables-profile.xml", Application.class);
}