如何将 Spring MVC 应用程序移植到 Spring REST?

How to port SpringMVC Application to SpringREST?

我们已经使用 Spring-Boot 和 Thymleaf 创建了 SpringMVC 应用程序。现在根据新要求,我必须将它们转换为 SPring-REST 以供外部应用程序使用(AngularJS 和 Android App)而不影响 thymleaf 页面。

请协助。

下面是示例代码。像这样有很多控制器

@Controller
@RequestMapping(value = "/admin/register")
@SessionAttributes("roles")
public class AdminRegisterController {
    @Autowired
    private UserService userService;

    @Autowired
    private RoleRepository roleRepository;

    @ModelAttribute("user")
    public User constructUser() {
        return new User();
    }

    @ModelAttribute("roles")
    public List<Role> InitializeRoles() {
        return roleRepository.findAll();
    }

    // Display Register Page
    @RequestMapping
    public String showRegister(Model model) {
        model.addAttribute("current", "register");
        return "register";
    }

    // Inserting new User
    @RequestMapping(method = RequestMethod.POST)
    public ModelAndView doRegister(@Valid @ModelAttribute("user") User user, BindingResult result) {
        if (result.hasErrors()) {
            return new ModelAndView("register");
        }
        userService.save(user);
        RedirectView redirectView = new RedirectView("/admin/register?success=true");
        redirectView.setExposeModelAttributes(false);
        return new ModelAndView(redirectView);
    }


    @RequestMapping("/available")
    @ResponseBody
    public String available(@RequestParam String username) {
        User user = userService.findOne(username);
        Boolean available = userService.findOne(username) == null;
        return available.toString();
    }


}

您可以使用 javax.ws.rs api 来做到这一点。

<dependency>
    <groupId>javax.ws.rs</groupId>
    <artifactId>javax.ws.rs-api</artifactId>
    <version>2.0</version>
</dependency>

并在您当前的代码中使用@RestController 而不是简单的@Controllers。