当前位置: 首页 > 面试题库 >

为什么Spring的FactoryBean getObject返回null?

陈志
2023-03-14
问题内容

我想ConversionService用custom 创建一个Spring
Converter,但是返回值ConversionServiceFactoryBean#getObjectnull。参见示例:

@Bean
@Autowired
public ConversionService conversionService(Set<Converter<?, ?>> converters) {
    final ConversionServiceFactoryBean factory = new ConversionServiceFactoryBean();
    factory.setConverters(converters);
    return checkNotNull(
            factory.getObject(),
            "conversionService must not be null.");
}

checkNotNull抛出一个NullPointerException。在converters按预期的方式注入。为什么工厂退货null?我该如何解决?


问题答案:

感谢Sotirios Delimanolis评论,我得出了以下解决方案:

@Bean
public ConversionServiceFactoryBean conversionService(Set<Converter<?, ?>> converters) {
    final ConversionServiceFactoryBean factory = new ConversionServiceFactoryBean();
    factory.setConverters(converters);
    return factory;
}

这实际上是以下配置的简写:

@Bean
public ConversionService conversionService(Set<Converter<?, ?>> converters) {
    final ConversionServiceFactoryBean factory = new ConversionServiceFactoryBean();
    factory.setConverters(converters);
    factory.afterPropertiesSet(); // necessary
    return factory.getObject();
}

工厂一直处于未完成状态,直到调用afterPropertiesSet(解释)。但是,如果ConversionServiceFactoryBean返回本身而不是,则无需调用它ConversionService。由于该工厂是一个InitializingBeanFactoryBeanSpring将调用afterPropertiesSetgetObject内部,如果需要ConversionService实例



 类似资料:
  • 引发。按预期注入。为什么工厂返回?我怎么才能修好?

  • 问题内容: 这是简单的代码,我没有得到设置位图的结果,而是得到了null。谁能告诉我我在哪里犯错了? 更新 好的,所以我无法像我想的那样将文本转换为图像。这样呢 这会创建位图吗? 问题答案: 从文档中: 返回 解码的位图;如果无法解码图像,则 返回 null。 字符串“ test”中涉及的字节不是有效的位图,对吗? 如果将文本“ test”保存在名为or 等的文件中,并试图在Windows中打开它

  • 问题内容: 我已经存储了在该数据库中插入并插入记录的过程。我想获取最后插入的记录的ID。返回NULL并返回正确的ID,为什么会发生?如我所读,因此最好在表上有一些触发器的情况下使用。我可以使用吗?不论触发器如何,它是否都在表的范围内返回ID? 那么问题是什么以及使用什么呢? 已编辑 问题答案: 就像奥德(Oded)所说的那样,问题在于您在执行之前要先询问身份。 作为解决方案,最好尽可能地接近运行。

  • 我正在尝试访问项目中的文件。但是getResource方法返回null。 以及eclipse工作区中项目文件夹的外观: 为什么啊?我想访问我的资产文件夹中的文件? 编辑我创建了一个jar文件,这是jar的内容: 已解决 首先,我有很多图像文件,所以我想把它们组织在一个文件夹中。我把assets文件夹放在src目录中,最后我能够访问这些文件。

  • 我的jar中有一个图像,我正试图加载它,但是getResourceAsStream()总是返回null。 目录结构: 所容纳之物爪哇: 一般内容。爪哇: StackTrace: 我不知道为什么类加载器找不到图像。我已经在编译的jar中查看过了,文件在那里,并且在油漆中打开很好,所以文件是OK的。我已经尝试了各种ClassLoader变体,包括getSystemClassLoader(),getCl

  • 我正在做一个练习游戏。 我有一个Spring引导/Maven项目连接到MySQL数据库。我能够设置一个api,它只是从我的“所有谜语”表中检索所有内容。它以前工作过,但是现在api返回一个json,其中一些键的值为空。我唯一玩的是Spring引导文件上的application.properties。我在spring.jpa.hibernate.ddl的“更新”和“无”之间跳跃。我到底做错了什么?