如何将 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。
我们已经使用 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。