일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- reveal in file explorer
- iframe
- height속성
- sub태그
- 임베디드
- RGBA
- 전체 선택자
- sup태그
- css
- go live
- 인접 형제 결합자
- br 태그
- html
- Checked 의사 클래스
- Live Server
- html tag i
- html 태그
- 자식결합자
- tag html
- width속성
- 아두이노
- padding 속성
- focus 의사클래스
- 일반 형제 결합자
- id 선택자
- RGB
- iframe 태그
- not 의사클래스
- background-color 속성
- i 태그
- Today
- Total
so woon!
[공통] 어노테이션 본문
학습일 : 2022. 10. 25
어노테이션
어노테이션
어노테이션(Annotation)은 후술하는 클래스, 메서드, 변수 등의 상태나 속성을 표시하기 위해 사용한다.
@Deprecated [Class | Method] : 해당 클래스 혹은 메서드가 더 이상 사용될 수 없음을 의미한다. 물론 해당 어노테이션이 붙어 있어도 정상 작동은 하지만 보통 '다음 버전 부터 빠질겁니다~' 라고 알려주는데에 사용된다.
public statid void main(String[] args) {
System.out.println( sum(3, 3) );
}
@Deprecated
public static int sum(int a, int b) {
return a+b;
}
@Override [Method] : 해당 메서드가 재정의(Override)되었음을 알린다. 생략하여도 제 기능은 하지만 개발자로서의 입지가...
@Controller [Class] : 해당 클래스가 스프링 부트가 인식해야 하는 컨트롤러(Controller)임을 알린다.
- value : 컨트롤러의 식별자를 직접 지정한다. 지정하지 않을 경우 컨트롤러 클래스의 이름을 사용한다.
@Requestmapping [Class | Method] :
value : 맵핑할 주소를 명시한다. 클래스의 경우 포함하는 메서드 맵핑의 전역 접두어, 메서드의 경우 단순 맵핑이다.
method : 해당 맵핑이 어떠한 요청 방식(Request Method)(들)에 대응할지에 대한 설정이다.
produces : 해당 맵핑의 응답 결과로 어떠한 컨텐츠가 반환될지에 대한 설정이다. MIME 타입을 사용한다.
해당 어노테이션이 컨트롤러인 클래스에 부여되었을 경우 해당 컨트롤러가 가지는 모든 해당 어노테이션이 붙은 메서드(맵핑 메서드)의 전역적인 접두어로서의 맵핑이 된다.
해당 어노테이션이 컨트롤러 내부의 메서드에 부여되었을 경우 해당 요청에 대한 행동(Action)을 실행할 메서드를 지정하게 된다.
주소 맵핑은 반드시 [Controller] / [Action] 의 형태로 작성해야 하며 앞 [Controller] 의 이름은 ~Controller의 클래스 이름 꼴에서 ~를, [Action] 은 메서드의 이름 중 요청 방식에 대한 접두어를 생략한 값을 채용한다. 가령, getIndex는 index로, postWrite를 write 로.
- 가령, 회원과 관련된 기능을 수행하는 컨트롤러 클래스의 이름이 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 | Variable] : 요구되는 타입을 스프링부트가 알아서 객체화 하여 전달토록 한다.
단, 이 타입은 스프링 부트가 인식 가능한 범위 내에 있어야만 한다.
클래스간(컨트롤러-서비스 간, 서비스-매퍼 간) 의존성 주입 (Dependency injection)을 위해 사용한다.
@SessionAttribute [Variable] : 어떠한 값을 세션 저장소로 부터 불러온다.
value : 불러올 값의 쌍에 대한 키(이름)이다. HttpSession 타입의 객체에 setAttribute(n, v) 메서드 호출시 적었던 이름(n) 과 같아야 한다.
required : 세션에서 불러올 값이 필수인가에 대한 여부이다. 기본값은 true이다. 이 값이 true 일때 세션에서 해당 변수를 불러올 수 없다면 400 (Bad Request) 오류가 발생한다.
'Spring Boot > 개념정리' 카테고리의 다른 글
[공통] JSON (0) | 2022.11.07 |
---|---|
[공통] MyBatis (1) | 2022.10.26 |
[공통] 프로젝트 구조 (0) | 2022.10.25 |
[공통] 타임리프 (0) | 2022.10.25 |
[공통] 스프링 부트 (0) | 2022.10.24 |