我想在Activiti中使用Spring表達式語言引用JPA存儲庫。但是,由於Spring使用<jpa:repositories/>
創建存儲庫bean,因此它們沒有與它們關聯的標識。有沒有辦法使用SpEL引用某種類型的bean而不是id?我嘗試使用我認爲是LocationRepository
的生成名稱(locationRepository),但沒有成功。引用沒有ID的bean
3
A
回答
1
我假設LocationRepository
是一個接口,以及正在爲您生成的底層實現。當Spring創建一個bean並且沒有明確指定id時,它通常使用實現類的類名來確定bean id。因此,在這種情況下,您的LocationRepository
的ID可能是生成的類的名稱。
但是由於我們不知道它是什麼,我們可以創建一個Spring FactoryBean
,它通過自動裝配從應用上下文獲得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"/>
然後,您應該能夠引用您LocationRepository
對象與bean ID locationRepository。
0
不知道如何在SPEL中執行此操作,但可以使用@Qualifier
來決定應該注入哪個bean。
如果你想要的話,你可以創建自己的定製@Qualifier註解和訪問bean的基礎上。
像
@Target({ElementType.FIELD, ElementType.PARAMETER})
@Retention(RetentionPolicy.RUNTIME)
@Qualifier // Just add @Qualifier and you are done
public @interface MyRepository{
}
要注入它現在使用的倉庫豆和其他地方@MyRepository
註解。
@Repository
@MyRepository
class JPARepository implements AbstractRepository
{
//....
}
其注入
@Service
class fooService
{
@Autowire
@MyRepositiry
AbstractRepository repository;
}
+0
不完全解決我的問題,但很好知道,感謝您的輸入=) – redZebra2012
相關問題
- 1. ManyToMany bean模型沒有Id值
- 2. 引用一個沒有ID的div
- 3. 引用IEnumerable中沒有ID的項目
- 4. 有沒有辦法打印出每個bean彈簧的bean id創建
- 5. 春季3.1:有多個@Qualifier引用指向同一個bean ID
- 6. param對bean沒有傳入複合組件的引用
- 7. org.springframework.beans.factory.nosuchbeandefinitionexception沒有名爲bean的bean。在Liferay
- 8. GWT編譯bean引用(沒有源代碼可用於類型)
- 9. 有沒有辦法在xml文件中獲取Bean ID
- 10. 如何比較沒有id的bean和檢索到的id字段?
- 11. 如何在spring中加載一個沒有id,名字的bean?
- 12. 的Spring bean創建失敗豆類沒有「id」屬性
- 13. 沒有Spring的Hibernate SessionFactory bean
- 14. 沒有faces-config.xml的CDI bean
- 15. org.springframework.beans.factory.NoSuchBeanDefinitionException:沒有名爲'eventpublisher'的bean可用
- 16. 獲取從表索引(TR沒有ID)
- 17. Datalife引擎重寫URL沒有ID
- 18. 沒有ID提供,另一個bean已註冊爲org.springframework.security.userDetailsService
- 19. 有沒有辦法在Javadoc中引用bean的屬性(getter和setter)?
- 20. 沒有應用我的ID
- 21. 如何定義的Spring bean有唯一的ID(在文件中沒有)?
- 22. Spring:沒有調用Bean init方法,它的屬性沒有值
- 23. 將沒有ID的對象的CSS修改爲引用
- 24. 多個bean引用同一個Singleton Bean
- 25. 春天:沒有autowire bean
- 26. 沒有資格bean異常
- 27. 我沒有包含java.lang.String bean?
- 28. struts 2 bean沒有創建
- 29. Eclipse沒有顯示字符串的引用ID
- 30. NHibernate的 - 從引用列選擇ID沒有加入
對不起,我在長週末之前發佈了這個延遲。它是有道理的,他們的bean名稱是生成的類而不是接口名稱,這就是爲什麼我不能引用它。感謝您的可能解決方案! – redZebra2012