본문 바로가기
CS/기본기 탄탄 🔥시리즈

🔥7. Spring (2) - annotation 정리

by IMSfromSeoul 2021. 7. 16.

📌 1. java annotation

Java 5부터 도입된 기능이다.

 

annotation은 주석이라는 뜻이지만, java annotation은 주석 그 이상의 의미를 갖는다.

 

@annotation 이 붙은 코드는 해당 annotation에 따라 연결되는 방향이 결정된다.

@은 비지니스 로직에는 영향을 주지 않지만, 해당 타겟의 연결관계를 정의하거나 소스 코드 전반의 구조를 변경할 수 있다.

 

즉, 해당 타겟의 역할을 정의하거나 용도를 명시할 수 있다.

 

한마디로 말하면, annotation은 meta data를 삽입하는 것이다.

🔥 meta data?

한마디로 하자면 data에 대한 data라고 할 수 있다.

 

대량의 정보(data) 가운데서 정보를 효율적으로 찾아내기 위해 일정한 규칙에 따라 부여하는 data이다.

대표적인 예로 HTML <Head>와 <Body> 를 들 수 있다.

 

meta data는 크게 2가지의 사용 장점을 보인다.

 

1. 데이터 구조화

2. 정보의 index 구실

 

HTML tag를 생각해보면 좀 더 이해가 쉽다.

meta data 내용 출처
https://wa-yeong.tistory.com/14

🔥 java 에서의 annotation

annotation을 잘 사용한다면 시스템 설정과 같은 부가적인 사항들은 @에게 위임하고, 개발자는 비지니스 로직에 집중할 수 있다.

 

annotation은 compile time에 처리될 수도 있고, java reflection을 걸쳐서 runtime에 처리될 수도 있다.

annotation은 소스코드에 붙이는 하나의 라벨이라고 생각하면 된다.

 

위 그럼처럼 사과에 라벨을 붙여서 사과박스를 만들어서 판매하는 일을 하는 노동자가 있다고 해보자.

판매가능한 사과에는 @CanSale이라는 라벨을 달아서 판매한다고 하자.

 

만약 컨베이너 벨트에서 판매가능한 사과를 분별하는 일을 하는 노동자와, 사과를 상자에 담는 노동자가 분리돼 있다고 해보자.

 

사과를 상자에 담는 노동자는 라벨을 보고, @CanSale이 붙은 사과만 상자에 넣으면 된다.

 

위와 같이, @annotation에 따라 해당 타겟의 경로가 결정된다.

annotation에 대한 설명
https://www.nextree.co.kr/p5864/

🔥 annotation 다른설명

소프트웨어 개발툴이 빌드나 배치시 코드를 자동으로 생성할 수 있도록 정보를 제공한다.

https://velog.io/@gillog/Spring-Annotation-%EC%A0%95%EB%A6%AC

📌 2. @SpringBootApplication

🔥  @ComponentScan

@Component와 @Service, @Repository, @Controller, @Configuration 등의 class bean들을 찾아서 Context에 bean 등록을 해주는 annotation 이다. 

@Service나 @Controller 안을 살펴보면 사실 안에 @Component가 달려있다. 즉 @Component scan은 @Component가 붙은 class들에 대해 bean을 등록해주는 것이다.

 

https://velog.io/@gillog/Spring-Annotation-%EC%A0%95%EB%A6%AC
https://mkil.tistory.com/456
https://seongmun-hong.github.io/springboot/Spring-boot-EnableAutoConfiguration

'CS > 기본기 탄탄 🔥시리즈' 카테고리의 다른 글

재정리 - 🔥 Spring  (0) 2021.10.02
재정리 - 🔥 db  (1) 2021.09.10
🔥6 - 데이터 베이스  (1) 2021.06.08
🔥5 - 네트워크  (0) 2021.06.03
🔥4 - 운영체제  (0) 2021.06.02

댓글