Search code examples
restspring-mvcspring-3

How to implement Rest web service using spring 3?


I have a Library application which is already implemented in spring MVC.

I need to use ReST web services for the same application using spring 3.

I have a Controller class I want is to be as a RestFul webService

@Controller @SessionAttributes("category")
public class CategoryController {

    private static final Log log = LogFactory.getLog(CategoryController.class);

    @Autowired
    private CategoryService categoryService;

    @Autowired
    private ItemService itemService;

    @RequestMapping("/category/categoryList.htm")
    public ModelAndView list(HttpServletRequest request,
            HttpServletResponse response) throws Exception {
        List<Category> list = categoryService.getAllMainCategories();
        Map map = new HashMap();
        map.put("categoryList", list);
        map.put("category", new Category());
        return new ModelAndView("categoryList", map);
    }

    @RequestMapping(method = RequestMethod.POST, value = "/category/save.htm")
    public String save(HttpServletRequest request,
            HttpServletResponse response, Category command) throws Exception {

        log.debug("save method called" + command);
        Category category = (Category) command;
        System.out.println(category);
        categoryService.saveCategory(category);
        return "redirect:/category/categoryList.htm";
    }

    @RequestMapping("/category/edit.htm")
    public String edit(@RequestParam String id, ModelMap model)
            throws Exception {
        log.debug("edit method called :" + id);
        log.debug(Long.parseLong(id));
        Category cat = categoryService.getCategory(Long.parseLong(id));
        model.put("categoryList", categoryService.getAllMainCategories());
        model.put("category", cat);
        return "categoryList";
    }

    @RequestMapping("/category/delete.htm")
    public String remove(@RequestParam String id, ModelMap model)
            throws Exception {
        log.debug("remove method called " + id);
        categoryService.deleteCategory(Long.parseLong(id));
        return "redirect:/category/categoryList.htm";
    }

    @InitBinder
    protected void initBinder(WebDataBinder binder) {
        binder.registerCustomEditor(Category.class,
                new PropertyEditorSupport() {
                @Override
                public void setAsText(String text) {
                    setValue(categoryService.getCategory(Long.valueOf(text)));
                }
            });
    }
}

it is CategoryController class which add delete or update a category

ItemService and CategoryService are data sources

Category is a domain object having properties like id,name,description etc..,

How do I write a REST web service for this?


Solution

  • There's a simple example showing how in Barebones Spring. Check it out.