我有泛型类ObjectDaoReflect<T extends BaseEntity>
它与reflaction一起工作,因为类型擦除它有带泛型类参数public ObjectDaoReflect(Class<T> objectClass)
的构造函数。我的想法是在Spring实例化之前添加自定义逻辑(它的原型bean),并读取关于Spring的一般信息,其中spring将注入我的bean,使用此代码我可以读取genereic字段类
(Class<?>) ((ParameterizedType) field.getGenericType()).getActualTypeArguments()[0]
我喜欢将它传递给我的bean构造函数。有没有办法在bean自动装配之前添加这个自定义逻辑?一般来说,我需要读取字段,弹簧将注入我的bean,读取它的泛型类型并将其传递给我的bean构造函数(或setter)。这有什么例子吗?或者我可能需要使用自定义注释而不是自动连接并使用BeanPostProcessor postProcessBeforeInitialization?
答案 0 :(得分:0)
您可以尝试这样的事情:
<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调用它来设置constructor-arg元素的'value'参数。