반응형
서문
Java Spring을 공부하다가 annotation이라는 개념을 본적이 없어서 생소하였다. 기존에 다른 언어에서는 보기 힘들던 개념이라서 annotation에 관하여 정리했다.
Annotation이란?
- @Annotation이란? : 코드에 추가적인 메타데이터 제공하기 위한 도구
- 주석의 역할 + 컴파일러 힌트 + 런타임 중에 특정 동작 수행 + 의존성
- 처음에는 단순 주석인가? 했는데 그렇다고 하기에는 슬래쉬 2개로 주석을 정의하기도 하고 annotation을 잘못쓰면 IDE에서 컴파일 경고가 뜨기도 했다. 단순 주석이 아니라 컴파일러와 소통을 하는 역할을 하고 있었다.
Java의 annotation
- 자바에서 기본으로 제공하는 annotation
어노테이션 |
설명 |
---|---|
@Override |
메서드가 부모 클래스나 인터페이스의 메서드를 올바르게 재정의했는지 확인 |
@Deprecated |
해당 코드가 더 이상 사용되지 않음을 표시. 만약 해당코드가 실행한다면 IDE에서 경고를 표시합니다. |
@SuppressWarnings |
컴파일러 경고를 무시합니다. 주의해서 사용해야 합니다. |
- 자바의 annotation
@Retention(RetentionPolicy.RUNTIME) //유효범위 런타임과 컴파일 처리 관련
@Target(ElementType.METHOD) //적용될 수 있는 대상
public @interface MyAnnotation {
String value(); // 어노테이션 속성
}
Java Spring의 annotation
- 자바 스프링의 어노테이션
- @component 는 spring이 객체 bean에서 관리될 수 있도록 지정하는데 사용된다. 즉 @controller와 @service, @repository는 @component와 동일한 역할을 하는데 이를 세분화 한것이다.
- 원래 @component로 지정되면 다른 클래스에서 의존해서 쉽게 쓸수 있게 만든다. (별도의 import 필요 없음)
@Controller | MVC의 Controller로 사용. | -HTTP 처리, 반환 -@ResponseBody(문자열이나 Json과 같은 데이터 return)와 @GetMapping과 같은 매핑 어노테이션과 함께 사용 |
@Service | 비즈니스 로직을 처리하는 서비스 계층. | -서비스를 의미적으로 구분하기 위해 사용 -controller, repository와 연계 |
@Repositroy | 데이터베이스와 통신하는 계층(DAO). | -CRUD 작업 -데이터 접근 예외 처리 |
@Autowired | 의존성 주입 | -@Autowired 가 붙은 필드, 생성자, 또는 메서드에 Spring 컨테이너가 관리하는 Bean을 주입 -필드,생성자,메서드에서 연결 -자동으로 처리됨 |
- 즉 spring의 annotation은 굳이 import 해줘서 써야 하는 의존성 관리의 어려움을 줄인것이다.
- DI(의존성 주입: 개발자가 의존성을 직접 생성하지 않고 spring 컨테이너가 주입)
- IoC(제어의 역전): 객체의 lifecycle을 개발자가 아닌 spring 컨테이너가 자동으로 관리 ㅣ
- Bean은 spring에서 객체 생성, 관리, 주입 해주는 중앙관리객체이다.
반응형
'CS 내용 요약, 지식 > Java Spring' 카테고리의 다른 글
[Java Spring]DTO란 (0) | 2024.11.23 |
---|---|
[JAVA] 롤로 설명하는 객체지향 프로그래밍 (OOP) (0) | 2024.11.22 |