Notice
Recent Posts
Recent Comments
Link
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

승띵이의 개발일지

[Spring Boot] 어노테이션(Annotation) 본문

언어/Spring Boot

[Spring Boot] 어노테이션(Annotation)

승띵이 2022. 10. 25. 17: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] 부분이 생략될 컨트롤러이고, 이때에 RequestMappingvalue값은 슬래쉬(/)로 지정한다.
      • 또한 해당[Controller] 주소부에 대한 [Action]이 생략되는 경우가 있는데 이때에 메서드의 이름은 ~Index로 지정한다.
      • 즉, HomeControllergetIndex 메서드에 대한 맵핑은 각, /, /이고, 접속 주소는 http://localhost:8080이 된다.

  • @RequestParam [Variable] : 발생한 요청의 매개변수 및 페이로드(Payload)에 있는 값을 받아오기 위해 사용한다.
    • value : 매개변수 및 페이로드의 이름이다. 주로 <input> 태그의 name 속성 값과 일치해야한다.
    • required : 해당 매개변수 및 페이로드가 필수로 전달되어야 하는가의 여부이다. 기본 값은 true이고, 이가 true일 때 해당 매개변수 및 페이로드에 값이 전달되지 않을 경우 400, Bad Request오류가 발생한다.
    • defaultValue : requiredfasle일 때 해당 값이 전달되지 않은 경우 대신 사용할 기본 값에 대한 명시이다.
    • 해당 어노테이션을 사용하는 변수가 기초 타입일 경우 requireddefaultValue와 무관하게 값이 전달되지 않을 경우 오류가 발생하니 사용에 유의한다. 전달 여부가 선택인 정수의 경우 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) 오류가 발생한다.

 

TMI

 

어노테이션.. 뭐가 어감이 멋지다. 래퍼 이름 같음 ㅋㅋ

Comments