È ansible nidificare i controller / avere i controller come classi interne in Spring 4 MVC?

Voglio avere un controller che si connetta a /site/ e all’interno di due controller diversi per assomigliare a qualcosa:

 @Controller @RequestMapping(value="/api") public class ApiController { @Controller @RequestMapping(value="/foo") public class FooController { //Some /foo/* methods here } @Controller @RequestMapping(value="/bar") public class BarController { //Some /bar/* methods here } //Other methods that don't match /foo or /bar } 

Va bene o sarebbe meglio dividerlo in due controller separati con /site/foo e /site/bar mapping?

Legare la gerarchia di classi alla propria gerarchia di risorse non dovrebbe essere il principale driver di progettazione qui.

IN Spring MVC, i Controllers sono semplici POJO per renderli facili da testare, la composizione è preferita rispetto all’ereditarietà, le annotazioni sono usate per trasmettere significato e rendere il tuo codice più leggibile.

I controller di nidificazione sotto Controllers sconfiggono molti di questi obiettivi.

Dovresti utilizzare metodi e non classi per i mapping. Il codice dovrebbe essere scritto in questo modo

 @Controller @RequestMapping(value="/site") public class ApiController { @RequestMapping(value="/foo", method=RequestMethod.GET) public String doFoo { // Foo Logic return "Running Foo"; } @RequestMapping(value="/bar", method=RequestMethod.GET) public String doBar { // Bar Logic return "Running Bar"; } }