簡體   English   中英

注入具有帶有通用類參數的構造函數的通用bean的方法

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM