Oi Gilberto! Tudo bem?
Isso é uma excelente pergunta e a resposta depende do gosto de quem utiliza.
1) Eu, honestamente não gosto de utilizar uma interface para colocar constantes no contexto do objeto em questão.
2) Recomendo utilizar static import para colocar constantes no contexto de seu objeto.
3) Recomendo utilizar classes e inner classes para criar esses bundles de constantes, que organizam o código, melhoram a leitura e o resultado disso é facilidade de manutenção.
4) É necessário entender que Enums e Constantes são conceitos diferentes, ou seja, precisa representar o valor do PI, é uma utilização de constante. Precisa definir valores aceitos por um atributo de um objeto, como GENERO, aí é uma aplicação de ENUM.
Segue um exemplo de bundle de constantes:
package com.example.demo;
public class WebConstants {
public static class Pages {
public static final String INDEX = "index.jsp";
public static final String CUSTOMERS = "customers.jsp";
public static final String CUSTOMER = "customer.jsp";
public static final String EMPLOYEES = "employees.jsp";
public static final String EMPLOYEE = "employee.jsp";
}
public static class ControllerMappings {
public static final String INDEX = "/";
public static final String CUSTOMERS = "/customers";
public static final String CUSTOMER = "/customer/{id}";
public static final String EMPLOYEES = "/employees";
public static final String EMPLOYEE = "employee/{id}";
}
}
E a utilização dessas contantes ficaria assim:
package com.example.demo;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import static com.example.demo.WebConstants.*;
@Controller
public class CustomerController {
@RequestMapping(ControllerMappings.EMPLOYEES)
public String employees(){
// ... ommited code!
return Pages.EMPLOYEES;
}
}
Caso siga com dúvida, estou por aqui.
Abraço e sucesso,
Att,
Rodrigo