重载的构造函数没有在groovy中调用

时间:2015-08-10 15:55:48

标签: spring grails groovy

我在groovy中重载了一个构造函数。但它没有被召唤。

目前我有:

默认构造函数:

[Average Peer Lag Days]

重载的构造函数:

UserServiceClient(){


    String encoded = Base64.encodeBase64String((userName + ":" + password ).getBytes()).replaceAll("\n", "")
         headerMap.put("Authorization","Basic " + encoded)

            }

我们试图通过Spring Bean创建一个对象:

UserServiceClient(String baseURI,String userName ,String password) {

               println"inside overloaded constructor"+baseURI

            if(baseURI==null){
                log.error("forms.ldap.baseUri parameter is null,Please configure same in respective property file ")
                throw new NullPointerException()
            }
            if(userName==null)
            {
                log.error("forms.ldap.userName parameter is null,Please configure same in respective property file  ")
                throw new NullPointerException()
            }
            if(password==null)
            {
                log.error("forms.ldap.password parameter is null,Please configure same in respective property file  ")
                throw new NullPointerException()
            }


            String encoded = Base64.encodeBase64String((userName + ":" + password ).getBytes()).replaceAll("\n", "")
            println"encoded values :"+encoded
            headerMap.put("Authorization","Basic " + encoded)
            setHeaderMap(headerMap)
      }

非常感谢您的帮助。

1 个答案:

答案 0 :(得分:5)

传递3个属性将使用默认构造函数创建对象,然后对新对象使用基于setter的注入(即,使用setBaseUri()方法等)。

尝试使用constructor-arg代替property的构造函数注入:

<bean id="userServiceClient" class="com.user.service.client.UserServiceClient">
    <constructor-arg value="${forms.ldap.baseUri}" />
    <constructor-arg value="${forms.ldap.userName}" />
    <constructor-arg value="${forms.ldap.password}" />
</bean>
相关问题