( Spring ) @Annotation 의미와 종류
ZZOOO
·2021. 4. 2. 10:21
안녕하세요 오늘은 Spring framework 에서 편리하게 사용되는 Annotation에 대해 글을 적어보고자 합니다.
📘 사전적 Annotation ?
Annotation 의 사전적 의미는 주석 입니다.
흔히 개발자가 (?) 알고 있는 주석은 개발을 하면서 본인 또는 협업 개발자가 소스에 대한 부가적인 설명을 덧붙일 때
유용하게 사용되는 기능입니다.
하지만 Annotation이 가지고 있는 주석의 의미는 조금 다릅니다.
💻 개발적 Annotation ?
JEE5 (Java Platform, Enterprise Edition 5) 부터 새롭게 도입된 요소로써
Java 개발 코드와 같이 사용되는 메타 데이터 중 하나입니다.
또한 프로그래밍 컴파일러가 클래스나 특정 서비스에 대한 에러를 체크하는 편리한 기능을 제공하고 있습니다.
Ex) @Pattern, @NotEmpty, @Max, @Min ....
( 메타 데이터 ? 는 뭐야 )
데이터를 다루기 위해서 기존에 추가되어있는 정보를 뜻합니다.
데이터의 활용방법, 규칙 , 데이터의 정보를 표기해놓은 것을 뜻합니다.
Annotation 의 장점
Java는 객체지향 프로그래밍 언어이기 때문에 선언적 프로그래밍 방식을 사용합니다.
그렇다 보니 어떤 한 가지의 서비스나 로직을 생성하기 위해선 여러 객체들을 생성해야 하는 단점이 있습니다.
프로젝트의 규모가 작다면 논외지만, 프로젝트의 규모가 크다면 그만큼 객체들 또는 로직이 커지기 때문에
문제가 생길 수밖에 없습니다.
하지만 ? Annotation 을 사용한다면 ?
사실 큰 변화는 없습니다. 그러나 Annotation으로 선언해놓은 객체 또는 데이터들의 유효성 검사 및
Model Class에 직접 명시하면서 소스 가독성이 높아집니다. 또한 코드의 양도 줄어들겠지요?
Annotation 의 단점
Annotation은 Module 또는 Application의 메타 데이터를 설정할 수 없습니다.
Annotation은 Class 단위 Package Level에 한정되기 때문에
여러 클래스에 공통적으로 Annotation을 설정할 수 없다.
Annotation 의 형태
- Marker Annotation ( 이름만 ) : @Annotation
- Single - Element Annotation ( 원소 하나만 ) : @Annotation( elementValue )
- Normal Annotation ( 원소 여러 개 ) : @AnnotationName ( element=value, element = value2 .. )
다음과 같이 나눌 수 있습니다.
Spring Annotation 종류
저도 Spring framework를 이용하여 프로젝트를 진행 중이다 보니 자주 쓰이는 것들 위주로 정리해보겠습니다.
Annotation ( @ ~ ) | Content |
@SpringBootApplication | - Application 클래스 class 상단에 선언합니다 - @EnableAutoConfiguration , @ComponentScan, @Configuration 이 세가지의 어노테이션을 제공하는것과 같은 의미입니다. |
@RestController | - Spring MVC Conroller에 @ResponseBody가 추가 된 형태입니다. - JSON 형태로 객체 데이터를 반환합니다. |
@RequestBody , @ResponseBody | @ResponseBody는 Http요청의 Body Content를 Java 객체로 변환해줍니다.. @ResponseBody는 Java 객체를 Http 요청의 Body Content로 매핑합니다. |
@PostMapping @GetMapping @PutMapping @DeleteMapping |
- 예전에는 RequestMapping에서 분류해서 사용했었다고합니다. - HTTP Method 에 해당되는 메소드에 선언합니다. - 본인은 ajax에서 url로 mapping 시켜서 Controller로 데이터를 전달하는 방식으로 사용하고있습니다. |
@Autowired | - 사용자가 주입하려하는 객체의 타입이 일치하는 객체를 자동으로 주입합니다. |
@Getter, @Setter | Get(), Set() 메소드를 컴파일시 생성해준다. |
제가 프로젝트에서 자주 사용하는 Annotation 들은 주로 이 정도인 것 같습니다.
궁금하신 내용이 있다면 댓글 바랍니다.
감사합니다.
'개발( Dev )' 카테고리의 다른 글
( eclipse ) 프로젝트 검색 & 소스 일괄 변경 ( 치환 ) (0) | 2021.04.15 |
---|---|
( Spring ) 간편하게 외부 라이브러리 . jar 파일 추가 방법 (0) | 2021.04.06 |
( Git, GitHub ) 레포지토리 생성 및 소스 업로드 (0) | 2021.03.31 |
( DataBase ) MySQL 기본키, 외래키 무시하고 Table 삭제하는 방법 (0) | 2021.03.29 |
( Git ) Git 개념 및 설치 방법 (0) | 2021.03.23 |