当前位置: 首页 > 知识库问答 >
问题:

@PostContruct在服务器启动期间给出NullPointerException

曾航
2023-03-14

我在服务器启动时在第一行得到空指针异常。

public class DefaultAreaPostalCodeService extends AbstractBusinessService implements AreaPostalCodeService {

        private Map<String,List<PostalCodeData>> suburbMap;

        @PostConstruct
        @Transactional
        public void initialize() {
            List<AreaPostalCodeModel> postalCodes = areaPostalCodeDao.getAllAreaPostalCodes();
            populateSuburbMap(postalCodes);
        }
    }

<bean id="areaPostalCodeService"
          class="za.co.testro.core.address.impl.DefaultAreaPostalCodeService" parent="abstractBusinessService">
        <property name="areaPostalCodeDao" ref="areaPostalCodeDao" />
    </bean>

我只是想在服务器启动时填充suburbMap,以便稍后使用。

错误日志-

创建名为“areaPostalCodeService”的bean时出错:调用init方法失败;嵌套异常是 java.lang.NullPointerException WARN [localhost-startStop-1] [CloseAwareApplicationContext] 上下文初始化期间遇到的异常 - 取消刷新尝试: org.springframework.beans.factory.BeanCreationException: 创建名为 'areaPostalCodeService' 的 Bean 时出错: init 方法调用失败;嵌套的异常是 java.lang.NullPointerException Ping jVM 需要 10 秒钟才能做出响应。错误 [localhost-startStop-1] [HybrisContextFactory] 初始化全局应用程序上下文时出错!org.springframework.beans.factory.BeanCreationException: 创建名为'areaPostalCodeService'的bean时出错:init方法的调用失败;nested exception is java.lang.NullPointerException at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeInitialization(InitDestroyAnnotationBeanPostProcessor.java:136) ~[spring-beans-4.3.3.REL

编辑1:

在将我的代码添加到afterProperties()之后,我仍然得到空指针异常。

信息:[localhost-startStop-1][ListMergeDirectiveBeanPostProcessor]在Bean[CartRaoProviderExtractor]上的后处理ListMerge指令[PromotionActionResultRaoExtractorListMergerDirective]警告[localhost-StartTop-1][CloseAwareApplicationContext]异常encoujava.lang.NullPointerException警告[Local Host-startStop.1][CloseawerApplicationContext]在上下文期间遇到异常初始化-取消刷新尝试:org.springframework.beans.factory。BeanCreationException:创建类路径资源[testcore spring.xml]中定义的名为“areaPostalCodeService”的bean时出错:初始化方法调用失败;嵌套异常是java.lang.NullPointerException错误[localhost-startStop-1][HybrisContextFactory]初始化全局应用程序上下文时出错!org.springframework.beans.factory。BeanCreationException:创建类路径资源[testcore spring.xml]中定义的名为“areaPostalCodeService”的bean时出错:初始化方法调用失败;在org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowiredCapableBean factory.java:1583)~[spring-beans-4.3.3.RELEASE.jar:4.3.RELEASE]的org.spring Framework.beans.factory.support.AbstractautowireCapable BeanFactoryy.doCreateBean(abstractautowiredCapable Bean factory.java:545)中的java.lang.NullPointerException是一个例外~[spring-beans-4.3.3.RELEASE.jar:4.3.RELEASE]位于org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractautowiredCapableBean factory.java:482)~[spring.beans-3.3.RELEASE.jar:4.2.3.RELEASE]在上下文初始化期间插入-取消刷新尝试:org.spring Framework.beans.factory。BeanCreationException:创建类路径资源[testcore spring.xml]中定义的名为“areaPostalCodeService”的bean时出错:初始化方法调用失败;嵌套异常是

编辑2:

使用应用程序上下文调用bean后仍然获得空指针异常。

Registry.getApplicationContext().getBean("areaPostalCodeDao", AreaPostalCodeDao.class).getAllAreaPostalCodes()

错误日志-

INFO[localhost-start Stall-1][ListMergeDirectiveBeanPostProcencer]在Bean[cartRAOProviderExtractors]WARN[localhost-start Stall-1][CloseAware Application Context]上下文初始化过程中遇到的异常-取消刷新尝试:org.springframework.beans.factory.BeanCreationException:在类路径资源中创建名称为“areaPoistCodeService”的bean时出错[testcore-spring.xml]:初始化方法调用失败;嵌套异常java.lang.NullPointerExceptionWARN[localhost-start Stall-1][CloseAware Application Context]上下文初始化过程中遇到的异常-取消刷新尝试:org.springframework.beans.factory.BeanCreationException:在类路径资源中创建名称为“areaPoistCodeService”的bean时出错[testcore-spring.xml]:初始化init方法调用失败;嵌套异常java.lang.NullPointerExceptionERROR[localhost-start Stall-1][HybrisContextFactory]初始化全局应用程序上下文时出错!org.springframework.beans.factory.BeanCreationException:在类路径资源中创建名为“areaPoistCodeService”的bean时出错[testcore-spring.xml]:初始化方法调用失败;在org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1583)~[spring-beans-4.3.3.RELEASE.jar:4.3.3.RELEASE]org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:545)~[spring-beans-4.3.3.RELEASE.jar:4.3.3.RELEASE]java.lang.NullPointerExceptionne sted异常

原因:org.springframework.beans。FatalBeanException:Context hybris全局上下文工厂无法正确创建,原因是创建类路径资源[testcore spring.xml]中定义的名为“AreaPostalCodesDevice”的bean时出错:初始化方法调用失败;嵌套异常是de.hybris.platform.core.hybriscoxtFactory.build(hybriscontFactory.java:314)中的java.lang.NullPointerException

共有2个答案

萧展鹏
2023-03-14

一个可能的解决方案,也许不是专门针对这种情况,但可以帮助其他人,是从视图中调用代码,第一眼就调用它。代码如下:

在XHTML中

<f:metadata>
     <f:viewAction action="#{myUI.myVoid()}"/>
</f:metadata>
胡厉刚
2023-03-14

有这样的行为是很正常的,因为在将< code>areaPostalCodeDao bean注入到为null的< code > areaPostalCodeDao 属性之前,会调用< code>@PostConstruct方法(此时)。

有4种方法可以在bean初始化时运行一些代码,但是每种方法都在特定的步骤中成功。Spring bean设置生命周期:

  1. 标准构造函数
  2. @后构造
  3. @覆盖后属性设置()初始化Bean接口
  4. 在其中-方法

因此,在您的情况下,您应该如上所述:

import org.springframework.beans.factory.InitializingBean;  

public class DefaultAreaPostalCodeService extends AbstractBusinessService implements AreaPostalCodeService,InitializingBean {

    private Map<String,List<PostalCodeData>> suburbMap;

    @Override
    @Transactional
    public void afterPropertiesSet() {
        List<AreaPostalCodeModel> postalCodes = areaPostalCodeDao.getAllAreaPostalCodes();
        populateSuburbMap(postalCodes);
    }
}
 类似资料:
  • 问题内容: 我刚刚完成了重新安装操作系统的工作,并且像往常一样安装和测试了我使用的标准工具,现在当我尝试从eclipse启动Jboss 5时,出现了前所未有的错误: 以前有没有人遇到过类似的问题?到目前为止我从未遇到过 问题答案: 看起来像是JRE和OS版本的某些特定组合发生的错误(请参阅https://jira.jboss.org/jira/browse/JBAS-6981)。基本上,JBoss

  • 在启动节点管理器之后,当我要启动startWeblogic时。sh发生这种情况时,服务器无法启动。(用户名、密码正确) 以行开始WLS:home/app/oracle/java/jdk1.8.0_171/bin/java-server-Xms256m-Xmx512m-XX:CompileThreshold=8000-cp/home/12c/app/oracle/product/12.2.1/wls

  • 我遇到这个问题已经有一段时间了,但没有找到解决方案。我正在rails中构建一个论坛应用程序。我刚刚完成将bootstrap和bootstrap gem添加到我的项目中。我去运行服务器,它以一个巨大的错误退出。在这里。

  • 无法启动nginx服务器OS:ubuntu服务器16.04 systemctl status nginx.status抛出此消息:nginx.service-高性能web服务器和反向代理服务器加载:加载(/lib/systemd/system/nginx.service;enabled;vendor preset:enabled)活动:失败(结果:exit-code)自UTC Thu 2016-1

  • 我是RubyonRails的新手,这里我尝试在64位Windows7上安装RubyonRails。 运行命令后,我执行了,然后执行。但随后我在命令提示符下出错了。 如何解决此错误? 如果我运行bundle安装,我将

  • 问题内容: 我有一个flask应用程序,目前正在以以下方式启动: 当我运行此脚本时,它通过打印成功执行: 但是它永远不会返回,如果我执行CTRL-C,服务器将停止。我正在尝试将其部署到生产环境中,并希望在后台运行此启动,只要服务器启动,进程就可以启动。 做这个的最好方式是什么? 问题答案: 可能是使其在后台运行的最简单方法。就是说,如果你要将其转入生产环境(如@LukasGraf所提到的那样,则不