JUST GO

[공통] 어노테이션 본문

Spring Boot/학습내용

[공통] 어노테이션

root_go 2022. 10. 25. 09:27

어노테이션

  • 어노테이션(Annotation)은 후술 하는 클래스, 메서드, 변수 등의 상태나 속성을 표시하기 위해 사용한다.
  • @Deprecated [Class | Method] : 해당 클래스 혹은 메서드가 더 이상 사용될 수 없음을 의미한다. 물론 해당 어노테이션이 붙어 있어도 정상 작동은 하지만 보통 '다음 버전부터 빠질 겁니다~'라고 알려주는 데 사용된다.
  • @Override [Method] : 해당 메서드가 재정의(Override) 되었음을 알린다. 생략하여도 제 기능은 하지만 (개발자로서의 입지가..)
  • @Controller [Class] : 해당 클래스가 스프링 부트가 인식해야하는 컨트롤러(Controller) 임을 알린다.
    • value : 컨트롤러의 식별자를 직접 지정한다. 지정하지 않을 경우 클래스의 이름을 사용한다.
  • @RequestMapping [Class | Method] :
    • value : 맵핑할 주소를 명시한다. 클래스의 경우 포함하는 메서드 맵핑의 전역 접두어, 메서드의 경우 단순 맵핑이다.
    • method : 해당 맵핑이 어떠한 요청 방식(Request Method)(들)에 대응할지에 대한 설정이다.
    • produces : 해당 맵핑의 응답 결과로 어떠한 컨텐트가 반환될지에 대한 설정이다. MIME 타입을 사용한다.
    • 해당 어노테이션이 컨트롤러인 클래스에 부여되었을 경우 해당 컨트롤러가 가지는 모든 해당 어노테이션이 붙은 메서드(맵핑 메서드)의 전역적인 접두어로서의 맵핑이 된다.
    • 해당 어노테이션이 컨트롤러 내부의 메서드에 부여되었을 경우 해당 요청에 대한 행동(Action)을 실행할 메서드를 지정하게 된다.
    • 주소 맵핑은 반드시 [Controller]/[Action]의 형태로 작성해야 하며 앞 [Controller]의 이름은 ~Controller의 클래스 이름 꼴에서 ~를, [Action] 은 메서드의 이름을 채용한다.
      • 가령, 회원과 관련된 기능을 수행하는 컨트롤러 클래스의 이름이 MemberController이고, 그 내부의 로그인을 담당하는 메서드의 이름이 getLogin이었다면, 각 맵핑은 /member, login이 됨으로 해당 메서드를 실행할 수 있는 맵핑 주소는 ~/member/login이 된다.
      • 단, 맵핑 규칙에 예외가 있다면 HomeController 혹은 RootController는 주소상 [Controller] 부분이 생략될 컨트롤러이고, 이때에 RequestMapping 의 value 값은 슬래쉬(/)로 지정한다.
      • 또한, 해당 [Controller] 주소부에 대한 [Action] 이 생략되는 경우가 있는데 이 때에 메서드 이름은 ~Index로 지정한다.
      • 즉, HomeController의 getIndex 메서드에 대한 맵핑은 각, /, /이고, 접속 주소는 http://localhost:8080/ 이 된다.

  • @RequestParam [Variable] : 발생한 요청의 매개변수 및 페이로드(Payload)에 있는 값을 받아오기 위해 사용한다.
    • value : 매개변수 및 페이로드의 이름이다. 주로, <input> 태그의 name 속성 값과 일치해야 한다.
    • required : 해당 매개변수 및 페이로드가 필수로 전달되어야 하는가의 여부이다. 기본 값은 true이고, 이가 true 일 때 해당 매개변수 및 페이로드에 값이 전달되지 않을 경우 400, Bad Request 오류가 발생한다.
    • defaultValue : required 가 false 일 때 해당 값이 전달되지 않은 경우 대신 사용할 기본 값에 대한 명시이다.
    • 해당 어노테이션을 사용하는 변수가 기초 타입일 경우 required 및 defaultValue와 무관하게 값이 전달되지 않을 경우 오류가 발생하니 사용에 유의한다. 전달 여부가 선택인 정수의 경우 int 대신 Integer를 사용할 수도 있다.
  • @Service [Class] : 해당 클래스가 스프링 부트가 인식해야 하는 서비스(Service) 임을 알린다.
    • value : 식별자를 직접 지정한다. 지정하지 않을 경우 클래스의 이름을 사용한다.
  • @Mapper [Interface] : 해당 인터페이스가 스프링 부트가 인식해야하는 매퍼(Mapper)임을 알린다.
  • @Autowired [Constructor | Method | Member Variable] : 요구되는 타입을 스프링 부트가 알아서 객체화하여 전달토록 한다. 단, 이 타입은 스프링 부트가 인식 가능한 범위 내에 있어야만 한다. 클래스 간(컨트롤러-서비스 간, 서비스-매퍼 간) 의존성 주입(Dependency Injection)을 위해 사용한다.
  • @SessionAttribute [Variable] : 어떠한 값을 세션 저장소로 부터 불러온다.
    • value : 불러올 값의 쌍에 대한 키(이름)이다. HttpSession 타입의 객체에 setAttribute(n, v) 메서드 호출시 적었던 이름(n)과 같아야 한다.
    • required : 세션에서 불러올 값이 필수인가에 대한 여부이다. 기본값은 true 이다. 이 값이 true 일 때 세선에셔 해당 변수를 불러올 수 없다면 400(Bad Request) 오류가 발생한다.
http://localhost:8080/user

-> HomeController / user 메서드

http://localhost:8080/user/

-> UserController / index 메서드

'Spring Boot > 학습내용' 카테고리의 다른 글

[공통] 타임리프  (0) 2022.10.25
[코드] HomeController  (0) 2022.10.25
[공통] 의존성  (0) 2022.10.25
[공통] Spring Initializr 시작  (0) 2022.10.25
[공통] 스프링 부트  (0) 2022.10.24