Cableando un Bean que a su vez tiene un Constructor

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());
    }
}

preguntado el 02 de julio de 12 a las 14:07

1 Respuestas

Utiliza @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 or haz tu propia pregunta.