# Spring MVC Basics (Spring Boot) > Spring MVC, สถาปัตยกรรม MVC, DispatcherServlet, @Controller, ViewResolver, รูปแบบ Model-View-Controller - 20 คำถามสัมภาษณ์ - Mid-Level - [คำถามสัมภาษณ์: Spring Boot](https://sharpskill.dev/th/technologies/spring-boot/interview-questions.md) ## 1. Annotation ใดที่เปลี่ยนคลาส Java ให้เป็น controller ของ Spring MVC? **คำตอบ** @Controller ทำเครื่องหมายคลาสให้เป็น controller ของ Spring MVC ที่จัดการคำขอ HTTP มันเป็นความเชี่ยวชาญเฉพาะของ @Component และช่วยให้ component scanning ตรวจพบ controller โดยอัตโนมัติ @RestController รวม @Controller และ @ResponseBody เข้าด้วยกันสำหรับ REST API ในขณะที่ @RequestMapping กำหนดการแมป URL แต่ไม่ได้ประกาศ controller ด้วยตัวมันเอง ## 2. ความแตกต่างหลักระหว่าง @Controller และ @RestController คืออะไร? **คำตอบ** @RestController รวม @Controller และ @ResponseBody เข้าด้วยกัน หมายความว่าทุกเมธอดจะคืนค่าข้อมูลที่ถูก serialize (JSON/XML) โดยอัตโนมัติแทนชื่อ view ด้วย @Controller คุณต้องเพิ่ม @ResponseBody ในแต่ละเมธอดเพื่อคืนค่าข้อมูล @RestController ถูกออกแบบมาสำหรับ REST API ในขณะที่ @Controller ใช้สำหรับเว็บแอปพลิเคชันแบบดั้งเดิมที่มีการ render view ## 3. จะแมปเมธอดของ controller กับคำขอ HTTP POST บน URL /users ได้อย่างไร? **คำตอบ** @PostMapping เป็น annotation เฉพาะทางสำหรับการแมปเมธอดกับคำขอ POST บน URL ที่ระบุ มันเป็นทางลัดของ @RequestMapping(method = RequestMethod.POST) annotation เฉพาะทางอื่น ๆ ได้แก่ @GetMapping, @PutMapping, @DeleteMapping และ @PatchMapping วิธีนี้อ่านง่ายและกระชับกว่า @RequestMapping ที่ใช้แอตทริบิวต์ method ## มีอีก 17 คำถาม - จะดึงตัวแปร path จาก URL เช่น /users/{id} ได้อย่างไร? - ควรใช้ annotation ใดเพื่อ deserialize JSON จาก body ของคำขอ HTTP โดยอัตโนมัติ? สมัครฟรี: https://sharpskill.dev/th/login ## หัวข้อสัมภาษณ์ Spring Boot อื่นๆ - [Spring Core - IoC & DI](https://sharpskill.dev/th/technologies/spring-boot/interview-questions/spring-core-ioc-di.md): 22 คำถาม, Junior - [Spring Boot Auto-Configuration](https://sharpskill.dev/th/technologies/spring-boot/interview-questions/spring-boot-auto-configuration.md): 20 คำถาม, Junior - [Spring Boot Starters](https://sharpskill.dev/th/technologies/spring-boot/interview-questions/spring-boot-starters.md): 18 คำถาม, Junior - [Application Properties & YAML](https://sharpskill.dev/th/technologies/spring-boot/interview-questions/application-properties-yml.md): 16 คำถาม, Junior - [การทำ Logging ด้วย SLF4J และ Logback](https://sharpskill.dev/th/technologies/spring-boot/interview-questions/logging.md): 20 คำถาม, Junior - [Spring Boot DevTools](https://sharpskill.dev/th/technologies/spring-boot/interview-questions/spring-boot-devtools.md): 15 คำถาม, Junior - [Spring REST Controllers](https://sharpskill.dev/th/technologies/spring-boot/interview-questions/spring-rest-controllers.md): 20 คำถาม, Mid-Level - [Request & Response Handling](https://sharpskill.dev/th/technologies/spring-boot/interview-questions/request-response-handling.md): 20 คำถาม, Mid-Level - [การจัดการข้อยกเว้น](https://sharpskill.dev/th/technologies/spring-boot/interview-questions/exception-handling.md): 25 คำถาม, Mid-Level - [Bean Validation](https://sharpskill.dev/th/technologies/spring-boot/interview-questions/bean-validation.md): 25 คำถาม, Mid-Level - [พื้นฐาน Spring Data JPA](https://sharpskill.dev/th/technologies/spring-boot/interview-questions/spring-data-jpa-basics.md): 25 คำถาม, Mid-Level - [เอนทิตี JPA และความสัมพันธ์](https://sharpskill.dev/th/technologies/spring-boot/interview-questions/jpa-entities-relationships.md): 30 คำถาม, Mid-Level - [การสืบค้น JPA](https://sharpskill.dev/th/technologies/spring-boot/interview-questions/jpa-queries.md): 30 คำถาม, Mid-Level - [Spring Data Repositories](https://sharpskill.dev/th/technologies/spring-boot/interview-questions/spring-data-repositories.md): 25 คำถาม, Mid-Level - [พื้นฐาน Spring Security](https://sharpskill.dev/th/technologies/spring-boot/interview-questions/spring-security-basics.md): 25 คำถาม, Mid-Level - [Spring Boot Actuator](https://sharpskill.dev/th/technologies/spring-boot/interview-questions/spring-boot-actuator.md): 20 คำถาม, Mid-Level - [การทดสอบหน่วยด้วย JUnit และ Mockito](https://sharpskill.dev/th/technologies/spring-boot/interview-questions/testing-junit-mockito.md): 30 คำถาม, Mid-Level - [การทดสอบ Spring Boot](https://sharpskill.dev/th/technologies/spring-boot/interview-questions/spring-boot-testing.md): 30 คำถาม, Mid-Level - [Profiles และ Environment](https://sharpskill.dev/th/technologies/spring-boot/interview-questions/profiles-environment.md): 20 คำถาม, Mid-Level - [RestTemplate และ WebClient](https://sharpskill.dev/th/technologies/spring-boot/interview-questions/resttemplate-webclient.md): 24 คำถาม, Mid-Level - [Async และ Scheduling](https://sharpskill.dev/th/technologies/spring-boot/interview-questions/async-scheduling.md): 25 คำถาม, Mid-Level - [Caching ด้วย Spring](https://sharpskill.dev/th/technologies/spring-boot/interview-questions/caching.md): 25 คำถาม, Mid-Level - [Spring WebFlux (Reactive)](https://sharpskill.dev/th/technologies/spring-boot/interview-questions/spring-webflux.md): 25 คำถาม, Mid-Level - [ทรานแซกชัน Spring](https://sharpskill.dev/th/technologies/spring-boot/interview-questions/transactions.md): 30 คำถาม, Senior - [การยืนยันตัวตนและการให้สิทธิ์ขั้นสูง](https://sharpskill.dev/th/technologies/spring-boot/interview-questions/authentication-authorization.md): 30 คำถาม, Senior - [JWT และความปลอดภัยแบบ Stateless](https://sharpskill.dev/th/technologies/spring-boot/interview-questions/jwt-stateless-security.md): 20 คำถาม, Senior - [OAuth2 และ Authorization Server](https://sharpskill.dev/th/technologies/spring-boot/interview-questions/oauth2-authorization-server.md): 20 คำถาม, Senior - [Spring Boot และ Docker](https://sharpskill.dev/th/technologies/spring-boot/interview-questions/spring-boot-docker.md): 19 คำถาม, Senior - [Microservices ด้วย Spring](https://sharpskill.dev/th/technologies/spring-boot/interview-questions/microservices-basics.md): 25 คำถาม, Senior - [Spring Cloud Config](https://sharpskill.dev/th/technologies/spring-boot/interview-questions/spring-cloud-config.md): 19 คำถาม, Senior - [การเพิ่มประสิทธิภาพการทำงาน](https://sharpskill.dev/th/technologies/spring-boot/interview-questions/performance-optimization.md): 30 คำถาม, Senior - [GraalVM Native Images](https://sharpskill.dev/th/technologies/spring-boot/interview-questions/graalvm-native-images.md): 20 คำถาม, Senior --- Source: SharpSkill (https://sharpskill.dev), tech interview preparation for your real stack. HTML version of this page: https://sharpskill.dev/th/technologies/spring-boot/interview-questions/spring-mvc-basics