2nd)spring controller, repository, service

Controller란?

  • Controller에 대해 간단히 말하자면 MVC에서 C에 해당 하며 주로 사용자의 요청을 처리 한 후 지정된 뷰에 모델 객체를 넘겨주는 역할을 한다.

    Controller 관련 대표적인 Annotation (annotation에 관한 내용 https://asfirstalways.tistory.com/309)

1) @Controller

  • Controller의 역할을 수행 한다고 명시(해당 클래스를 Controller로 사용한다고 Spring FrameWork에 알린다.)
    필요한 비즈니스 로직을 호출하여 전달할 모델(Model)과 이동할 뷰(View) 정보를 DispatherServlet에 반환 한다.

  • Bean으로 등록

  • @Component의 구체화 된 어노테이션

2) @RequestMapping

  • 요청에 대해 어떤 Controller, 어떤 메소드가 처리할지 맵핑하기 위한 어노테이션

  • 클래스나 메서드 선언부에 @RequestMapping과 함께 URL을 명시하여 사용한다.

  • viewName 생략시 @RequestMapping의 path로 설정한 URL이 default viewName

    RequestMapping 속성들
    1) value(String[]) : URL 값

/ EX) /
@RequestMapping(value="/login")
@RequestMapping("/login")

2) method (RequestMethod[]) : HTTP Request 메소드 값

  • GET, POST, HEAD, OPTIONS, PUT, DELETE, TRACE

/ EX1) /
@RequestMapping(value="/login", [email protected])
/ EX2) /
@RequestMapping(value="/login", [email protected])
※ Spring4.3 이후 ex1), ex2)는 다음과 같이 쓸수 있다.

ex1) @GetMapping("/login")

== @RequestMapping("/login", [email protected])

ex2) @PostMapping("/login")

== @RequestMapping("/login", [email protected])

3) params(String[]) : HTTP Request 파라미터

① @RequestParam : 사용자가 원하는 매개변수에 값을 매핑하기위해 사용한다.

@PostMapping("/member")
public String member(@RequestParam String name, @RequestParam Int age)

여기서 @ReauestParam은 생략 가능하다. 사용자가 입력한 key값과 매개변수의 이름을 비교하여 값을 넣어주기 때문이다. 결국 다음의 위 아래 둘 다 동일한 의미다.

@PostMapping("/member")
public String member(String name, Int age)

② @PathVariable : url 경로를 변수화하여 사용할 수 있도록 해준다.

@RequestMapping("/member/{name}/{age}")
public String member(@PathVariable("name") String name, @PathVariable("age") String age)

=> RequestMapping의 {name}과 PathVariable 의 String name을 매핑 하여 준다.

그리고 잘 사용해보진 않지만 다음과 같은 속성도 존재 한다.

4) consumes(String[]) : Request Body에 담는 타입을 제한할 수 있다.

@PostMapping("/login", consumes="application/json")

헤더에 application/json이 존재 해야 처리한다.

repository

'저장소'라는 뜻을 가진 단어. JPA에서 Repository 인터페이스를 생성 후 JpaRepository<Entity, 기본키 타입>을 상속 받으면(extends) 기본적인 Create, Read, Update, Delete가 자동으로 생성된다.

service

spring은 DAO(data access 파트)와 service가 항상 나눠져있다.
service는 사용자(고객)을 대상으로, 사용자의 request에 response하기 위한 로직을 구현하는 부분이다.
service는 고객과 맞닿아 있는 부분을 구현하고, DAO는 데이터베이스와 맞닿아 있는 부분을 구현한다.

비즈니스 로직을 보유하고 있음을 나타내기 위해 @Service로 빈을 표시

출처)https://snepbnt.tistory.com/312
https://goddaehee.tistory.com/203
https://par3k.tistory.com/204
https://www.lesstif.com/sonatype-nexus/software-repository-36209229.html
https://velog.io/@umtuk/EC-Spring-2%EC%A3%BC%EC%B0%A8-Controller-Repository-Service

좋은 웹페이지 즐겨찾기