[英]Way to inject generic bean that have constructor with generic class argument
我有通用類ObjectDaoReflect<T extends BaseEntity>
extended ObjectDaoReflect<T extends BaseEntity>
它可以進行反射,因為類型擦除它具有帶有通用類參數public ObjectDaoReflect(Class<T> objectClass)
構造函數。 我的想法是在spring實例化bean(其原型bean)之前添加自定義邏輯,並讀取有關Spring將在其中注入我的bean的Field的一般信息,使用此代碼,我可以讀取一般字段類
(Class<?>) ((ParameterizedType) field.getGenericType()).getActualTypeArguments()[0]
而且我喜歡將其傳遞給我的bean構造函數。 有沒有辦法在bean自動裝配之前添加此自定義邏輯? 通常,我需要在哪個春天將要注入我的bean的地方讀取字段,讀取它的泛型類型並將其傳遞給我的bean構造函數(或setter)。 有這個例子嗎? 還是我需要使用自定義批注而不是自動裝配並使用BeanPostProcessor postProcessBeforeInitialization?
您可以嘗試如下操作:
<bean id="blaBean" class="bla.bla.BlaBeanImpl">
<constructor-arg type="java.lang.Class" value="#{(CheckClassUtil.shouldUseFoo()) ? 'bla.bla.Foo' : 'bla.bla.Bar'}"/>
</bean>
在EL中使用您的邏輯選擇構造函數參數作為類。 您可能會創建靜態方法,該方法將類名稱返回為String並通過EL調用它以設置構造函數arg元素的“值”參數。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.