我在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)
}
非常感谢您的帮助。
答案 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>