SpringBoot @RestController詳解

光陰不負卿發表於2020-10-06

瞭解@RestController我們可以先來了解一下其他幾個註解

@Controller

@Controller是Spring框架提供的註解,通過它標識的類,代表控制器類(控制層/表現層)。這裡控制層裡面的每個方法,都可以去呼叫@Service標識的類(業務邏輯層),而@Service標識的類中的方法可以繼續呼叫@Resposity標識的介面實現類(Dao層/持久層)。

@Controller用於標記在一個類上,使用它標記的類就是一個SpringMVC的Controller類,分發處理器會掃描使用該註解的類的方法,並檢測該方法是否使用了@RequestMapping註解。@Controller只是定義了一個控制器類,而使用@RequestMapping註解的方法才是處理請求的處理器。@RequestMapping給出外界訪問方法的路徑,或者說觸發路徑,觸發條件。

用@ResponseBody標記Controller類中的方法。把return的結果變成JSON物件返回。如果沒有這個註解,這個方法只能返回要跳轉的路徑,即跳轉的頁面。有這個註解,可以不跳轉頁面,只返回JSON資料。

@RestController

@RestController是Spring4.0之後新增的註解。相當於@Controller+@ResponseBody合在一起的作用。

Controller類中的方法返回值,預設是JSON物件,也就是相當於@Controller裡面的方法上新增了@ResponseBody,如果方法返回值,需要跳轉,那麼方法的返回型別必須是View或者ModelAndView。

import com.example.studentsys.entiy.User;
import com.example.studentsys.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;

@RestController
@RequestMapping("/user")
public class UserController {
    @Autowired
    UserService userService;

    @PostMapping("/login")
    public String login(User user){
        return userService.login(user);
    }

    @PostMapping("/regist")
    public String regist(User user){
        return userService.regist(user);
    }

    /**
     * 解決查詢資料庫中文出現亂碼問題
     * @return
     */
    @RequestMapping(value = "/alluser", method = RequestMethod.GET, produces = "application/json;charset=UTF-8")
    public List<User> findAll(){
        return userService.findAll();
    }
}

 

相關文章