Spring mvc 如何将SpringMVC应用程序移植到SpringREST?

Spring mvc 如何将SpringMVC应用程序移植到SpringREST?,spring-mvc,spring-restcontroller,Spring Mvc,Spring Restcontroller,我们已经使用SpringBoot和ThymalLeaf创建了SpringMVC应用程序。现在根据新的要求,我必须将它们转换为SpringREST,用于外部应用程序消费(AngularJS和Android应用程序),而不影响页面 请帮忙 下面是示例代码。像这样,有很多控制器 @Controller @RequestMapping(value = "/admin/register") @SessionAttributes("roles") public class AdminRegisterCont

我们已经使用SpringBoot和ThymalLeaf创建了SpringMVC应用程序。现在根据新的要求,我必须将它们转换为SpringREST,用于外部应用程序消费(AngularJS和Android应用程序),而不影响页面

请帮忙

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

@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();
    }


}
@控制器
@请求映射(value=“/admin/register”)
@会期贡献(“角色”)
公共类AdminRegisterController{
@自动连线
私人用户服务;
@自动连线
私人角色扮演者角色扮演者;
@ModelAttribute(“用户”)
公共用户constructUser(){
返回新用户();
}
@模型属性(“角色”)
公共列表初始值设定项(){
return rolerepositional.findAll();
}
//显示寄存器页
@请求映射
公共字符串显示寄存器(模型){
model.addAttribute(“当前”、“寄存器”);
返回“登记簿”;
}
//插入新用户
@RequestMapping(method=RequestMethod.POST)
公共ModelAndView doRegister(@Valid@ModelAttribute(“用户”)用户,BindingResult){
if(result.hasErrors()){
返回新的ModelAndView(“注册”);
}
userService.save(用户);
RedirectView RedirectView=new RedirectView(“/admin/register?success=true”);
redirectView.setExposeModelAttributes(false);
返回新的ModelAndView(重定向视图);
}
@请求映射(“/available”)
@应答器
公共字符串可用(@RequestParam String username){
User=userService.findOne(用户名);
布尔值available=userService.findOne(username)==null;
返回可用。toString();
}
}

您可以使用javax.ws.rsapi来实现这一点

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

javax.ws.rs
javax.ws.rs-api
2

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

是的。我想使用SpringREST…所以我认为它非常简单。但唯一的问题是如何在不同的应用程序中使用它们,因为我的方法不会返回ResponseEntity,而是返回thymleaf的String->pagename。我将用示例代码编辑我的问题。恐怕你不能做你想做的事情,你不能在一个由thymeleaf(返回HTML)和json呈现的方法中使用相同的返回值,但是如果你的业务逻辑在你的服务中正确隔离,你可以做的是创建一些rest控制器并在那里添加你需要的所有方法。