Post

Spring Annotation 개념 및 정리

1. Annotation 이란

Annotation은 Java5부터 새롭게 추가된 문법요소로, 사전적 의미는 주석이라는 의미를 가지고 있다.

자바에서 사용될 때의 Annotation은 코드 사이에 주석처럼 쓰여서 특별한 의미를 부여한다.

컴파일러가 특정 오류를 억제하도록 지시하는 것과 같이 프로그램 코드의 일부가 아닌 프로그램에 관한 데이터를 제공, 코드에 정보를 추가하는 정형화된 방법이다.

즉, 프로그램에게 추가적인 정보를 제공해주는 메타데이터(meta data: 데이터를 위한 데이터)라고 볼 수 있다.

2. 종류

1) Spring Annotation

어노테이션설명
@Controller스프링 MVC의 컨트롤러 객체임을 명시하는 어노테이션
@RequestMapping특정 URI에 매칭되는 클래스나 메소드임을 명시하는 어노테이션
@RequestParamrequest의 파라미터를 가져오는 기능을 하며 메소드내에 변수로 활용
@RequestHeader요청(request)에서 특정 HTTP헤더 정보를 추출할 때 사용
@PathVariable메소드 파라미터 앞에 사용하며 해당 URL에 { } 특정 파라미터를 변수로 활용 가능
@CookieValue현재 사용자의 쿠키가 존재하는 경우 쿠키 이름을 이용해서 쿠키 값을 추출
@ModelAttributeview에서 전달해주는 파라미터를 클래스의 멤버변수로 binding 해주는 어노테이션
@InitBinder파라미터를 수집해서 객체로 만들 경우에 커스터마이징
@ResponseBodyJSON 형식의 데이터값을 응답할 때 사용하는 것으로 response Body에 형식이 노출객체를 return시 json 라이브러리에 의해 문자열로 변환
@RequestBody요청이 들어온 데이터(Json, XML)를 클래스나 model로 매핑
@RepositoryDAO 객체
@Service서비스 객체
@SessionAttributes@SessionAttributes(“name”)이라고 하면 Model에 key값이 “name”으로 있는 값은 자동으로 세션에 저장
@RunwithJUnit 프레임워크의 테스트를 할수 있도록 설정 @Runwith에 Runner클래스 설정시 JUnit의 내장된 runner대신 설정한 SpringJUnit4ClassRunner를 실행
@ContextConfiguration지정된 클래스나 문자열을 이용해 필요한 객체들을 스프링내 객체로 등록
@Log4jLombok을 이용해 로그를 기록하기 위한 Logger 변수 생성
@Autowired해당 인스턴스 변수에 스프링으로부터 자동으로 Bean을 주입, new 연사자와 같음
@TestJUnit에서 테스트 대상을 표시하며 단위테스트 메소드임을 명시
@ComponentComponent는 스프링에게 해당 클래스가 관리해야할 대상임을 표시
@SetterSet( ) 메소드를 자동으로 생성하여, 사용할수 있게 해줌
@GetterGet( ) 메소드를 자동으로 생성하여, 사용할수 있게 해줌
@GetMappingRequestMapping(Method=RequestMethod.GET)과 동일
@PostMappingRequestMapping(Method=RequestMethod.POST)과 동일
@Transactional데이터베이스 트랜잭션 설정 어노테이션 (AutoCommit, rollback, commit 등) DB의 접근이 하나라도 실패시 rollback 비지니스 로직과 트랜잭션 관리는 모두 Service에서 하기때문에 Service 메소드는 @Transactional 사용
@Cacheable메소드 앞에 지정하여 사용하며 메소드를 최초 호출시 캐시에 적재하고 추후 동일한 요청이 들어올 시 캐시의 결과를 리턴. 메소드의 호출 횟수를 줄여주는 어노테이션
@RestControllerSpring Restful Controller로 데이터를 반환하는 컨트롤러이다. view가 필요없는 API에 지원(Spring 4.0.1 이후)하며, @RequestMapping 메소드가 @ResponseBody 의미를 가정한다. data(json, xml) return 시 사용

2) Lombok Annotation

어노테이션설명
@AllArgsConstructor모든 필드를 파라미터로 가지는 생성자를 생성
@NoArgsConstructor파라미터가 없는 기본 생성자를 생성
@RequiredArgsConstructorfinal, @NonNull 인 필드값만 파라미터로 받는 생성자를 생성
@EqualsAndHashCodeequals( )메소드와 hashCode( )메소드를 오버라이드
@Data@toString, @getter/setter, @RequiredArgsConstructor 등 모두 사용한것과 같은 기능

3) Jpa Annotation

어노테이션설명
@Entity데이터베이스의 테이블과 1대1 매칭
@Id테이블 컬럼의 기본키에 설정
@Column테이블 컬럼에 설정, @Entity로 지정시 생략가능
@GeneratedValue기본키에 지정된 auto increment 등의 속성을 지정
@EmbeddedId테이블 컬럼의 복합키에 설정
@Enumeratedenum과 관련되어 있으며, EnumType.ORDINAL, STRING의 속성
@Transient데이터베이스에서 실제 사용하지 않는 것을 지정, 임시값으로 활용

[출처 및 참고]

This post is licensed under CC BY 4.0 by the author.