승띵이의 개발일지
[Spring Boot] 어노테이션(Annotation) 본문
어노테이션(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
가fasle
일 때 해당 값이 전달되지 않은 경우 대신 사용할 기본 값에 대한 명시이다.- 해당 어노테이션을 사용하는 변수가 기초 타입일 경우
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) 오류가 발생한다.
TMI
어노테이션.. 뭐가 어감이 멋지다. 래퍼 이름 같음 ㅋㅋ
'언어 > Spring Boot' 카테고리의 다른 글
[Spring Boot / Web] 웹 프로젝트 만들기 (0) | 2022.10.25 |
---|---|
[Spring Boot] 어노테이션 활용 (주소 설정 & HTML 연동) (2) | 2022.10.25 |
[Spring Boot] 타임리프 (Thymeleaf) (0) | 2022.10.25 |
[Spring Boot] 의존성 (Dependency) (0) | 2022.10.25 |
[Spring Boot] 스프링부트 (Spring Boot) (0) | 2022.10.25 |
Comments