2016-04-11 14 views
0

Spring-BootとThymleafを使用してSpringMVCアプリケーションを作成しました。今度は新しい要件に従って、外部アプリケーションの使用のためにSPring-REST(AngularJSとAndroid App)に変換しなければなりません。SpringMVCアプリケーションをSpringRESTに移植する方法は?

助けてください。

以下はサンプルコードです。このように多くのコントローラがあります

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


} 
+0

thymeleaf(return HTML)とjsonによってレンダリングされるメソッドで同じ戻り値を使用することはできませんが、ビジネスロジックが適切にサービス内で分離されている場合は、いくつかの残りのコントローラを作成し、必要なすべてのメソッドを追加します。 – cralfaro

答えて

0

これを実行するには、javax.ws.rs APIを使用できます。

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

@現在のコードでは単純な@Controllerの代わりに@RestControllerを使用してください。

+0

はい。私はSpringRESTを使用したいと思います...だから私はとても簡単です。しかし、私のメソッドはResponseEntityを返さず、むしろThymleafのString - > pagenameを返すので、異なるアプリでそれらを消費する方法が問題になります。サンプルコードで質問を編集します。 – user5572128

関連する問題