"Como seria possível ordenar por mais de um campo, por exemplo, por nome e por salario ?"
O parâmetro "properties" de Sort.by é um varargs.
Portanto, basta passar os próximos como strings, separados por vírgula.
Por exemplo:
PageRequest.of(scanner.nextInt(), 2, Sort.by(Sort.Direction.ASC, "nome", "salario"));
"Por último, como seria possível ordenar por mais de um campo em "direções" diefrentes, por exemplo, por nome DESC e por salario ASC ?"
Não testei, mas acredito que esse objetivo seja atingido da seguinte forma:
Passe uma lista de Order, dentro de Sort.by.
Exemplo:
PageRequest.of(scanner.nextInt(), 2, Sort.by(List.of(Sort.Order.desc("nome"), Sort.Order.asc("salario"))));