본문 바로가기
Java

[Java/Spring] 어노테이션

by 전재경 2022. 12. 8.

어노테이션(@, annotation)

 

사전적 의미로는 '주석' , Java 코드에 @를 이용해 주석처럼 달아 특수한 의미를 부여

프로그램 코드의 일부가 아닌 프로그램에 관한 데이터를 제공, 코드에 정보를 추가하는 정형화된 방법

 

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

 

2. 종류

1) Spring Annotation

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

2) Lombok Annotation

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

3) Jpa Annotation

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

 

'Java' 카테고리의 다른 글

[Java/Spring] 객체지향 프로그래밍 5원칙  (0) 2022.12.08
객체 지향 3요소 5원칙  (0) 2022.11.29
[Java] JVM이란 ?  (0) 2022.11.27

댓글