【发布时间】:2018-04-23 11:37:35
【问题描述】:
我正在开发一个 Spring Data JPA 应用程序,并且我创建了一个 AttributeConverter 类,以便将对象的 ArrayList 保存为数据库列中的 JSON。在这个类中,我需要使用一个我定义为 Spring Bean 的类。
由于AttributeConverter 类由 Hibernate 管理,它似乎在创建任何 Spring bean 之前就已实例化,因此 DI 似乎不起作用(AttributeConverter 类中的 Spring Bean 是 null,并且我收到了NullPointer 异常)。所以目前我正在创建该 bean 的另一个实例,以便能够在 AttributeConverter 类中使用它(这违背了 DI 的目的)。
我还尝试创建一个 Util 类(用 @Component 注释),它实现了 ApplicationContextAware,它提供了一个提供 SpringBean (cxt.getBean(BeanClass.class)) 的方法。但这也是在 AttributeConverter 之后实例化的。
有没有办法解决这个问题?
谢谢。
【问题讨论】:
-
@tom01 不,不是。您提供的链接是关于在创建对象时控制的对象,在 AttributeConverter 的情况下是不可能的。
-
该链接显示了如何自动装配未由 Spring 容器初始化的实例,在这种情况下有什么不同?当然,只需在适当的应用程序生命周期点获取对 Hibernate 和 AutowireCapableBeanFactory 创建的 AttributeConverter 实例的引用。