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

San*_*iah 2 grails groovy spring

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

现在我有:

默认构造函数:

UserServiceClient(){


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

            }
Run Code Online (Sandbox Code Playgroud)

重载的构造函数:

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)
      }
Run Code Online (Sandbox Code Playgroud)

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

 <bean id="userServiceClient" class="com.user.service.client.UserServiceClient">
    <property name="baseURI" value= "${forms.ldap.baseUri}" />
    <property name="userName" value="${forms.ldap.userName}" />
    <property name="password" value="${forms.ldap.password}" />
    </bean>
Run Code Online (Sandbox Code Playgroud)

非常感谢您的帮助.

the*_*th_ 5

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

尝试使用构造函数注入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>
Run Code Online (Sandbox Code Playgroud)