Cableando un Bean que a su vez tiene un Constructor
Frecuentes
Visto 66 equipos
1
Tengo un cliente de servicio web que tiene una clase de autenticador. El Autenticador requiere un nombre de usuario/contraseña. Buscando ayuda sobre cómo inyectar las credenciales usando Spring.
¿Debo inyectar el usuario/pase en el Autenticador o en el cliente que está instanciando el Autenticador?
Cualquier ejemplo concreto sería apreciado, ya que soy nuevo en Spring.
Así es como se ven los dos componentes:
@Controller
public class WSClient {
@Autowired
MyAuthenticator myAuthenticator;
}
}
El Autenticador, con las credenciales:
public class MyAuthenticator extends Authenticator {
private final String userName;
private final String passWord;
public MyAuthenticator(String userName, String passWord) {
this.userName = userName;
this.passWord = passWord;
}
@Override
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(this.userName, this.passWord.toCharArray());
}
}
1 Respuestas
1
Utilice la herramienta @Value
para establecer el nombre de usuario/contraseña en Authentication
frijol
@Component
public class MyAuthenticator extends Authenticator {
@Value("${credentials.username}")
private final String userName;
@Value("${credentials.password}")
private final String passWord;
public MyAuthenticator(String userName, String passWord) {
this.userName = userName;
this.passWord = passWord;
}
@Override
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(this.userName, this.passWord.toCharArray());
}
}
y en archivo XML
add
<util:properties id="credentials" location="classpath:credentials.properties"/>
y poner credentials.properties
en classpath
Respondido 02 Jul 12, 14:07
No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas java spring or haz tu propia pregunta.