Spring Controller ve RestController Annotationlar

Bu yazıda Spring Boot @Controller ve @RestController annotation’larının ne işe yaradığını, aralarındaki farkları ve RESTful web servis geliştirmede nasıl kullanıldıklarını ele alıyoruz.

Kısa özet: @Controller view döndürmek için kullanılırken, @RestController JSON/XML gibi veri döndürmek için kullanılır.

1. @Controller Nedir?

@Controller, Spring MVC mimarisinde kullanılan bir annotation’dır ve genellikle view (HTML sayfa) döndürmek için kullanılır.

Eğer bir metodun çıktısını doğrudan HTTP response body içinde döndürmek istersek, @ResponseBody annotation’ını kullanmamız gerekir.

@Controller + @ResponseBody birlikte kullanıldığında REST API yazılabilir.

Örnek Kullanım


@Controller
@Slf4j
public class PostControllerOrnek {

    private final PostServiceImpl postService;

    public PostControllerOrnek(PostServiceImpl postService) {
        this.postService = postService;
    }

    @RequestMapping(value="/getAllPost", method=RequestMethod.GET)
    @ResponseBody
    public ResponseEntity<List<PostDto>> getAllPost() {
        log.info("PostController -> getAllPost");
        List<PostDto> postDtoList = postService.getAllPost();
        return ResponseEntity.ok(postDtoList);
    }
}
      
Spring Controller örneği

2. @RestController Nedir?

@RestController, Spring 4.0 ile birlikte gelen ve @Controller + @ResponseBody birleşimi olan bir annotation’dır.

RESTful API geliştirme sürecini kolaylaştırmak için kullanılır ve tüm metodların çıktısını otomatik olarak response body’ye yazar.

@RestController kullanıldığında @ResponseBody yazmaya gerek yoktur.

Örnek Kullanım


@RestController
@RequestMapping("/api/posts")
@Slf4j
@CrossOrigin(origins = "*")
public class PostController {

    private final PostServiceImpl postService;

    public PostController(PostServiceImpl postService) {
        this.postService = postService;
    }
}
      
Spring RestController örneği

@Controller vs @RestController Farkları

Özellik @Controller @RestController
Kullanım amacı View (HTML) döndürmek JSON/XML veri döndürmek
@ResponseBody ihtiyacı Gerekli Gerekmez
Kullanım alanı Web MVC REST API
Modern backend geliştirmede genellikle @RestController tercih edilir.

Sonuç

Spring Boot ile web servis geliştirirken doğru annotation seçimi oldukça önemlidir.

@Controller daha çok geleneksel MVC yapılarında kullanılırken, @RestController modern REST API geliştirme süreçlerinde standart haline gelmiştir.

Etiketler: spring controller nedir, restcontroller nedir, spring boot rest api, spring mvc vs rest, java spring tutorial

Daha fazla içerik için:
latestsoftwaredevelopers.com

Latest Software Developers - Yazılım Blog Yazarı Profil Resmi

Yazar

LatestSoftwareDevelopers

Güncel yazılım teknolojilerinin takip edildiği blog.

Spring Boot ile ilgili yorumlar

Yorum Paylaş

EMail Zorunlu alanlar * *