2012-09-12 3 views
3

Поскольку в версии Spring2.5 существует множество типов контроллеров, какой контроллер использует внутренняя реализация Spring при использовании @controller? и как весна решает, какой контроллер реализовать?Какой контроллер использует весна внутри, когда используется @controller

+0

Можете ли вы использовать Spring 3.X? У него лучше @Controller hanling, контроллеры - обычные, только аннотированные, бобы. – Xaerxess

+0

Да, я использую Spring3 сейчас, однако мой вопрос в том, как работает @controller, как весна знает, какой тип контроллера реализовать. Например, в Spring2.5 у нас есть контроллеры, такие как abstractcontroller, simpleformcontroller и т. Д. ... поэтому использование аннотированных контроллеров будет внутренне реализовать какой вкус контроллера? – kartheek

ответ

1

Короткий ответ: Не имеет значения, как @Controller реализован внутри страны.

Длинный ответ:

Сначала вы должны read the reference manual знать API, который, основываясь на прежде всего органов аннотациями. У вас нет AbstractController, SimpleFormController и т.д. Важное предложение:

@Controller аннотацию указывает, что конкретный класс служит роли контроллера. Spring не требует расширения любого базового класса контроллера или ссылки на API сервлета.

Вы должны отказаться от "Spring MVC 2.5 мышления" и просто определить бобы аннотированные с @Controller как

@Controller 
public class ClinicController { 

    private final Clinic clinic; 

    @Autowired 
    public ClinicController(Clinic clinic) { 
     this.clinic = clinic; 
    } 

    @RequestMapping("/") 
    public void welcomeHandler() { 
    } 

    @RequestMapping("/vets") 
    public ModelMap vetsHandler() { 
     return new ModelMap(this.clinic.getVets()); 
    } 

} 

и просто использовать их как обычные бобы (путем добавления к servlet.xml <bean class="com.example.ClinicController " />). Это намного проще.

+0

Спасибо за ваш ответ. – kartheek

Смежные вопросы