【问题标题】:pass "HardCoded" Constructor Arg Class<T> to bean via Spring Config通过 Spring Config 将“HardCoded”构造函数 Arg Class<T> 传递给 bean
【发布时间】:2012-08-15 14:53:35
【问题描述】:

我有一个要注入服务的泛型类型。由于泛型在 Java 中的实现方式,我需要一个构造函数 arg(或属性设置器)来保存泛型类型参数的 Class 信息。

我的问题是——我可以通过属性注入或指定构造函数 arg 传递一个带有 spring 的 Class 实例吗?

我在运行前就知道 T 的类型,所以我具体知道 Type 参数是什么。

我在想它应该是这样的:

<bean id="dataMartService" class="com.someclass">
    <constructor-arg value="java.lang.class<com.someotherclass>" />
</bean>

我完全不知道这应该如何发生吗?

【问题讨论】:

    标签: java spring dependency-injection


    【解决方案1】:

    试试:

    <bean id="dataMartService" class="com.someClass">
        <constructor-arg>
            <value type="java.lang.Class">someotherclass</value>
        </constructor-arg>
    </bean>
    

    【讨论】:

      【解决方案2】:

      使用spring el:

      <constructor-arg value="#{ T(java.lang.Math) }" />
      

      (为此你需要 spring 3.0)

      话虽如此,如果你将一个字符串传递给一个参数,在一个属性集期间需要一个类,spring 应该自动转换它,尽管我不确定在匹配构造函数时这是如何工作的。上面的方法要简洁得多。

      【讨论】:

        【解决方案3】:

        你可以使用:

        //for constructor
        public CheckSpell(SpellCheker spellCheker){
                 this.spellCheker=spellCheker;
        }
        
        //Use object reference as bean
        
            <bean id="textEditor" class="com.sring.spellCheck">
                  <constructor-arg ref="spellChecker"/>
              </bean>
        
        <bean id="spellCheker" class="com.spring.SpellCheker"/>
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-03-19
          • 2021-10-23
          • 1970-01-01
          • 2013-12-12
          • 2020-05-03
          相关资源
          最近更新 更多