gpt4 book ai didi

spring - 引用没有 id 的 beans

转载 作者:行者123 更新时间:2023-12-01 15:23:32 26 4
gpt4 key购买 nike

我正在尝试在 Activiti 中使用 Spring 表达式语言引用 JPA 存储库。但是,由于 Spring 使用 <jpa:repositories/> 创建存储库 bean ,它们没有关联的 ID。有没有办法使用 SpEL 来引用某种类型的 bean 而不是通过 id?我尝试使用我认为是 LocationRepository 的生成名称 (locationRepository) , 但没有成功。

最佳答案

我假设 LocationRepository 是一个接口(interface),并且正在为您生成支持实现。 Spring在创建bean且没有显式指定id时,通常使用实现类的类名来确定bean的id。所以在这种情况下,您的 LocationRepository 的 id 可能是生成类的名称。

但由于我们不知道它是什么,我们可以创建一个 Spring FactoryBean,它只是通过 Autowiring 从应用程序上下文中获取 LocationRepository 并将其放回新名称下的应用上下文。

public class LocationRepositoryFactoryBean extends AbstractFactoryBean<LocationRepository> {
@Autowired
private LocationRepository bean;

public Class<?> getObjectType() { return LocationRepository.class; }
public Object createInstance() throws Exception { return bean; }
}

在您的应用上下文 xml 中:

<bean name="locationRepository" class="your.package.LocationRepositoryFactoryBean"/>

然后您应该能够使用 bean id locationRepository 引用您的 LocationRepository 对象。

关于spring - 引用没有 id 的 beans,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12305786/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com