No nosso caso, definimos que o username é o email.
Mas e se em uma aplicação (como o  Twitter) você pode logar via e-mail ou outro campo (vamos chamar de apelido aqui), como que faria?
Seria desta forma? (Lembrando que eu criaria o método no UsuarioRepository.
    @Override
    public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException
    {
        Optional<Usuario> usuario = repository.findByEmailOrApelido(username);
        if (usuario.isPresent())
        {
            return usuario.get();
        }
        throw new UsernameNotFoundException("Dados inválidos!");
    }