Spring bean初始化 - Clojure

时间:2012-05-17 10:41:43

标签: spring clojure

我有一个clojure类,我使用spring bean初始化初始化。

我的setter方法如下

  

(defn -setCompanyName [currency](println(str“company:”company)))

Bean初始化如下

<bean id="company" class="test.Company"
        p:companyName="orce"/>

我收到了以下错误。

  

bean类[test.Company]的属性“companyName”无效:Bean属性   'companyName'不可写或具有无效的setter方法。是否   setter的参数类型与getter的返回类型匹配?

有谁知道这个问题的根本原因。

此致 Isuru。

2 个答案:

答案 0 :(得分:3)

这个特定问题有几种可能的原因,因此如果没有所有代码,很难说出什么是失败的。

以下是适用于我的代码:

(ns test)

(gen-class
   :main false
   :name test.Company
   :methods [[setCompanyName [String] void]])

(defn -setCompanyName [this company] (println (str "company : " company)))

注意:

  • 需要任何吸气剂
  • 方法的签名在:methods vector。
  • 中指定
  • 您的函数应该有一个额外的“this”参数
  • gen-class宏根据宏的参数生成一个类,因此根本不会查看-setCompanyName函数定义。

我发现javap命令非常有用,可以看到gen-class正在生成什么:

javap.exe -classpath classes/ test.Company
public class test.Company extends java.lang.Object{
    public static {};
    public test.Company();
    public java.lang.String toString();
    public boolean equals(java.lang.Object);
    public java.lang.Object clone();
    public int hashCode();
    public void setCompanyName(java.lang.String);
}

我还建议您查看http://clojuredocs.org/clojure_core/clojure.core/gen-class上的第二个示例,了解如何管理状态。

答案 1 :(得分:0)

你不需要另一个功能参数吗?第一个充当了这个&#39;这个&#39;指针。我现在无法通过手机对此进行测试。