Bom dia Patrick,
Há como fazer isso. Você pode usar variáveis de ambiente no seu arquivo .properties e, no ambiente em que a aplicação roda (seja um SO por aplicação, uma VM por aplicação ou até um container Docker para cada uma), popular tais variáveis com os valores específicos para cada cliente.
Exemplo de application.properties:
dataSource.driverClassName=oracle.jdbc.OracleDriver
dataSource.url=${DATABASE_URL}
dataSource.username=${DATABASE_USER}
dataSource.password=${DATABASE_PASS}
Variáveis de ambiente do cliente 1:
DATABASE_URL=jdbc:oracle:thin:@db_host:1521:sid
DATABASE_USER=usr
DATABASE_USER=senhaDificil246810
Variáveis de ambiente do cliente 2:
DATABASE_URL=jdbc:oracle:thin:@db_host2:1521:sid
DATABASE_USER=cliente2
DATABASE_USER=senhaDificilDoCliente2
Quando você subir a aplicação no ambiente do cliente 1, o .properties vai ter os valores das variáveis definidas naquele ambiente. Quando você subir no outro ambiente, os valores das variáveis serão diferentes, logo o .properties também vai ter valores diferentes, sem precisar recompilar.
Há outros modos (bem) mais seguros de guardar senhas, mas usei esse a título de exemplo.
Espero tê-lo ajudado. Se houver mais dúvidas, avisa aí.
Abraço.