Java Spring:NPE,同时从XML配置创建bean

Java Spring:NPE,同时从XML配置创建bean,java,xml,spring,javabeans,Java,Xml,Spring,Javabeans,我正在使用Java和Spring框架进行应用程序的迁移。 迁移是一大步,libs版本的移动如下: Java JDK1.6到JDK11 Spring框架3.2.0至5.3.1 Spring集成3.0.0到5.4.1 弹簧安全3.1.0至5.4.2 我花了一些时间在编译问题上,但现在我在启动应用程序时卡住了 应用程序配置是所有XMLBeans配置(以及spring集成消息传递配置)中的大部分。 在启动和创建bean时,应用程序总是以相同的NullPointerException失败 示例1: 一

我正在使用Java和Spring框架进行应用程序的迁移。 迁移是一大步,libs版本的移动如下:

  • Java JDK1.6到JDK11
  • Spring框架3.2.0至5.3.1
  • Spring集成3.0.0到5.4.1
  • 弹簧安全3.1.0至5.4.2
我花了一些时间在编译问题上,但现在我在启动应用程序时卡住了

应用程序配置是所有XMLBeans配置(以及spring集成消息传递配置)中的大部分。 在启动和创建bean时,应用程序总是以相同的NullPointerException失败

示例1:

一个简单的jdbc初始化,使用以下两个脚本:


    <jdbc:initialize-database data-source="userDataSource" enabled="true" ignore-failures="DROPS">
        <jdbc:script location="classpath:/security/Clear.sql" />
        <jdbc:script location="#{securityUsersSql}" />
    </jdbc:initialize-database>

如果我对这一部分进行评论,以理解并了解它的发展方向,那么就涉及到SpringIntegrationBeans部分

示例2:

一个简单的日志通道适配器将导致相同的NPE


    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns:context="http://www.springframework.org/schema/context"
        xmlns:si="http://www.springframework.org/schema/integration"
        xmlns:si-file="http://www.springframework.org/schema/integration/file"
        xmlns:si-jpa="http://www.springframework.org/schema/integration/jpa"
        xmlns:si-xml="http://www.springframework.org/schema/integration/xml"
        xmlns:task="http://www.springframework.org/schema/task"
        xmlns:util="http://www.springframework.org/schema/util"
        xsi:schemaLocation="http://www.springframework.org/schema/beans
                http://www.springframework.org/schema/beans/spring-beans.xsd
                http://www.springframework.org/schema/context
                http://www.springframework.org/schema/context/spring-context.xsd
                http://www.springframework.org/schema/integration
                http://www.springframework.org/schema/integration/spring-integration.xsd
                http://www.springframework.org/schema/integration/file
                http://www.springframework.org/schema/integration/file/spring-integration-file.xsd
                http://www.springframework.org/schema/integration/jpa
                http://www.springframework.org/schema/integration/jpa/spring-integration-jpa.xsd
                http://www.springframework.org/schema/integration/xml
                http://www.springframework.org/schema/integration/xml/spring-integration-xml.xsd
                http://www.springframework.org/schema/task
                    http://www.springframework.org/schema/task/spring-task.xsd
                http://www.springframework.org/schema/util
                http://www.springframework.org/schema/util/spring-util.xsd">
    
        <import resource="classpath:/META-INF/spring/configurationContext.xml" />
    
            <beans profile="dev,prod,import-plan">
    
            <!--  log messages -->
            <si:wire-tap channel="pid-logger" pattern="pid-in,pid-endOfFlowChannel,pid-replyChannel"/>
            <si:logging-channel-adapter id="pid-logger" log-full-message="true" level="INFO"/>
    
        </beans>
    
    </beans>

示例3:

同样,如果我用入站通道适配器将其注释掉


    <beans profile="dev,prod,import-plan">
    
            <!--  log messages -->
    <!--        <si:wire-tap channel="pid-logger" pattern="pid-in,pid-endOfFlowChannel,pid-replyChannel"/> -->
    <!--        <si:logging-channel-adapter id="pid-logger" log-full-message="true" level="INFO"/> -->
    
            <si:publish-subscribe-channel id="pid-errorChannel" />
    
            <bean id="pid-alarm-publisher" class="com.cy.sylphe.planner.server.integration.plan.in.AlarmPublisher">
                <constructor-arg ref="entityManager" />
            </bean>
    
                <!-- end of flow when exception are raised (move the import file to ./rejected) -->
                <si:service-activator input-channel="pid-errorChannel">
                <bean class="com.cy.sylphe.planner.server.integration.plan.in.ExceptionHandler">
                    <constructor-arg ref="pid-alarm-publisher" />
                </bean>
                </si:service-activator>
    
            <bean id="pid-finalizer" class="com.cy.sylphe.planner.server.integration.plan.in.Finalizer">
                <property name="entityManager" ref="entityManager" />
            </bean>
    
            <!-- parse input directory, periodically -->
            <si-file:inbound-channel-adapter id="pid-loadPlansChannel" directory="${plans-import-directory}"
                filename-pattern="${plans-import-file-pattern}" prevent-duplicates="false">
                <si:poller id="poller" fixed-rate="${plans-import-fixed-rate}" error-channel="pid-errorChannel">
                        <!-- use a time-out to stop the flow when the XML file cannot finish -->
                <si:transactional propagation="REQUIRED" transaction-manager="transactionManager" timeout="2000"/>
                </si:poller>
            </si-file:inbound-channel-adapter>
    
    </beans>

所有这些例子在迁移之前都很有效。我看不到这些例子之间有什么共同之处,也看不到任何明显的东西每次都会导致相同的NPE(如果我继续下去,还有很多其他的例子)。 有些事情我不明白,我错过了一些东西

有什么想法吗?谢谢你的帮助


    org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.integration.handler.LoggingHandler#0': Unexpected exception during bean creation; nested exception is java.lang.NullPointerException
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:544)
        at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:335)
        at org.springframework.beans.factory.support.AbstractBeanFactory$$Lambda$237/000000000000000000.getObject(Unknown Source)
        at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234)
        at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:333)
        at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:208)
        at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:944)
        at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:925)
        at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:588)
        at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:401)
        at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:292)
        at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:103)
        at org.eclipse.jetty.server.handler.ContextHandler.callContextInitialized(ContextHandler.java:930)
        at org.eclipse.jetty.servlet.ServletContextHandler.callContextInitialized(ServletContextHandler.java:553)
        at org.eclipse.jetty.server.handler.ContextHandler.startContext(ContextHandler.java:889)
        at org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHandler.java:356)
        at org.eclipse.jetty.webapp.WebAppContext.startWebapp(WebAppContext.java:1445)
        at org.eclipse.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1409)
        at org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:822)
        at org.eclipse.jetty.servlet.ServletContextHandler.doStart(ServletContextHandler.java:275)
        at org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:524)
        at com.google.gwt.dev.shell.jetty.JettyLauncher$WebAppContextWithReload.doStart(JettyLauncher.java:550)
        at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:72)
        at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:169)
        at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:110)
        at org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:100)
        at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:72)
        at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:169)
        at org.eclipse.jetty.server.Server.start(Server.java:407)
        at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:110)
        at org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:100)
        at org.eclipse.jetty.server.Server.doStart(Server.java:371)
        at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:72)
        at com.google.gwt.dev.shell.jetty.JettyLauncher.start(JettyLauncher.java:760)
        at com.google.gwt.dev.DevMode.doStartUpServer(DevMode.java:636)
        at com.google.gwt.dev.DevModeBase.startUp(DevModeBase.java:898)
        at com.google.gwt.dev.DevModeBase.run(DevModeBase.java:705)
        at com.google.gwt.dev.DevMode.main(DevMode.java:432)
    Caused by: java.lang.NullPointerException
        at java.base/java.lang.Class.isAssignableFrom(Native Method)
        at org.springframework.beans.BeanUtils.findEditorByConvention(BeanUtils.java:566)
        at org.springframework.beans.TypeConverterDelegate.findDefaultEditor(TypeConverterDelegate.java:337)
        at org.springframework.beans.TypeConverterDelegate.convertIfNecessary(TypeConverterDelegate.java:153)
        at org.springframework.beans.TypeConverterSupport.convertIfNecessary(TypeConverterSupport.java:73)
        at org.springframework.beans.TypeConverterSupport.convertIfNecessary(TypeConverterSupport.java:53)
        at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:759)
        at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:228)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1356)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1206)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:571)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:531)
        ... 37 more


    <beans profile="dev,prod,import-plan">
    
            <!--  log messages -->
    <!--        <si:wire-tap channel="pid-logger" pattern="pid-in,pid-endOfFlowChannel,pid-replyChannel"/> -->
    <!--        <si:logging-channel-adapter id="pid-logger" log-full-message="true" level="INFO"/> -->
    
            <si:publish-subscribe-channel id="pid-errorChannel" />
    
            <bean id="pid-alarm-publisher" class="com.cy.sylphe.planner.server.integration.plan.in.AlarmPublisher">
                <constructor-arg ref="entityManager" />
            </bean>
    
                <!-- end of flow when exception are raised (move the import file to ./rejected) -->
                <si:service-activator input-channel="pid-errorChannel">
                <bean class="com.cy.sylphe.planner.server.integration.plan.in.ExceptionHandler">
                    <constructor-arg ref="pid-alarm-publisher" />
                </bean>
                </si:service-activator>
    
            <bean id="pid-finalizer" class="com.cy.sylphe.planner.server.integration.plan.in.Finalizer">
                <property name="entityManager" ref="entityManager" />
            </bean>
    
            <!-- parse input directory, periodically -->
            <si-file:inbound-channel-adapter id="pid-loadPlansChannel" directory="${plans-import-directory}"
                filename-pattern="${plans-import-file-pattern}" prevent-duplicates="false">
                <si:poller id="poller" fixed-rate="${plans-import-fixed-rate}" error-channel="pid-errorChannel">
                        <!-- use a time-out to stop the flow when the XML file cannot finish -->
                <si:transactional propagation="REQUIRED" transaction-manager="transactionManager" timeout="2000"/>
                </si:poller>
            </si-file:inbound-channel-adapter>
    
    </beans>


    org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'pid-loadPlansChannel.adapter.source': Initialization of bean failed; nested exception is java.lang.NullPointerException
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:617)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:531)
        at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:335)
        at org.springframework.beans.factory.support.AbstractBeanFactory$$Lambda$237/000000000000000000.getObject(Unknown Source)
        at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234)
        at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:333)
        at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:208)
        at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:925)
        at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:925)
        at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:588)
        at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:401)
        at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:292)
        at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:103)
        at org.eclipse.jetty.server.handler.ContextHandler.callContextInitialized(ContextHandler.java:930)
        at org.eclipse.jetty.servlet.ServletContextHandler.callContextInitialized(ServletContextHandler.java:553)
        at org.eclipse.jetty.server.handler.ContextHandler.startContext(ContextHandler.java:889)
        at org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHandler.java:356)
        at org.eclipse.jetty.webapp.WebAppContext.startWebapp(WebAppContext.java:1445)
        at org.eclipse.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1409)
        at org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:822)
        at org.eclipse.jetty.servlet.ServletContextHandler.doStart(ServletContextHandler.java:275)
        at org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:524)
        at com.google.gwt.dev.shell.jetty.JettyLauncher$WebAppContextWithReload.doStart(JettyLauncher.java:550)
        at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:72)
        at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:169)
        at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:110)
        at org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:100)
        at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:72)
        at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:169)
        at org.eclipse.jetty.server.Server.start(Server.java:407)
        at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:110)
        at org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:100)
        at org.eclipse.jetty.server.Server.doStart(Server.java:371)
        at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:72)
        at com.google.gwt.dev.shell.jetty.JettyLauncher.start(JettyLauncher.java:760)
        at com.google.gwt.dev.DevMode.doStartUpServer(DevMode.java:636)
        at com.google.gwt.dev.DevModeBase.startUp(DevModeBase.java:898)
        at com.google.gwt.dev.DevModeBase.run(DevModeBase.java:705)
        at com.google.gwt.dev.DevMode.main(DevMode.java:432)
    Caused by: java.lang.NullPointerException
        at java.base/java.lang.Class.isAssignableFrom(Native Method)
        at org.springframework.beans.BeanUtils.findEditorByConvention(BeanUtils.java:566)
        at org.springframework.beans.TypeConverterDelegate.findDefaultEditor(TypeConverterDelegate.java:337)
        at org.springframework.beans.TypeConverterDelegate.convertIfNecessary(TypeConverterDelegate.java:153)
        at org.springframework.beans.TypeConverterDelegate.convertIfNecessary(TypeConverterDelegate.java:98)
        at org.springframework.beans.TypeConverterDelegate.convertToTypedArray(TypeConverterDelegate.java:455)
        at org.springframework.beans.TypeConverterDelegate.convertIfNecessary(TypeConverterDelegate.java:172)
        at org.springframework.beans.AbstractNestablePropertyAccessor.convertIfNecessary(AbstractNestablePropertyAccessor.java:588)
        at org.springframework.beans.AbstractNestablePropertyAccessor.convertForProperty(AbstractNestablePropertyAccessor.java:607)
        at org.springframework.beans.BeanWrapperImpl.convertForProperty(BeanWrapperImpl.java:219)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.convertForProperty(AbstractAutowireCapableBeanFactory.java:1740)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1696)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1436)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:608)
        ... 38 more