Spring boot web-Autowire bean转换为XML定义的bean为空
我正在将现有的基于Spring3.1的web应用程序转换为SpringBoot1.2.5。我最初将我的旧应用程序升级到Spring 4.1.7 旧应用程序使用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
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);
}