Bom dia galera, tudo certo?
Apesar de já ter terminado o curso, estou fazendo uma aplicação do zero para praticar tudo que tenho estudado, e escolhi o Spring para isto. Como já trabalhei com VRaptor e gostava muito do sistema de redirects e forwards, acabei criando uma classe utilitária para fazer algo similar(não gosto de trabalhar com as strings da URL diretamente):
public class Router {
public static <T> T access(Class<T> controllerType) {
return MvcUriComponentsBuilder.controller(controllerType);
}
public static String urlFor(Object invocationInfo) {
return MvcUriComponentsBuilder
.fromMethodCall(invocationInfo)
.build()
.toUriString();
}
public static String redirectTo(Object invocationInfo) {
return "redirect:" + MvcUriComponentsBuilder
.fromMethodCall(invocationInfo)
.build()
.toUriString();
}
public static String forwardTo(Object invocationInfo) {
return "redirect:" + MvcUriComponentsBuilder
.fromMethodCall(invocationInfo)
.build()
.toUriString();
}
}
Exemplo de utilização:
@RequestMapping(value = "/logout", method = RequestMethod.GET)
public String logout() {
return Router.redirectTo(Router.access(AdminLoginController.class).index());
}
Isto acabou me proporcionando um problema: caso eu precisar de objetos injetados pelos construtores dos métodos(como o RedirectAttributes), acaba inutilizando a minha classe.
Há alguma maneira de eu conseguir acesso a estas classes através de alguma Factory do próprio Spring, ou injetá-la com @Autowired? Pensei em gerar um @Bean para ela, mas para isto preciso de acesso a sua Factory ou construtor.
Pesquisei no tio Google não encontrei a resposta ainda, então decidi perguntar aqui no fórum. :)
Obrigado galera, abraço!