Java Spring

JAVA/Spring 에서 어노테이션(@) 이란? - 어노테이션 사용의 중요성

pearl.k 2023. 5. 15. 18:19

1. 어노테이션(@) 이란?

 Java 코드에서 @ 기호는 어노테이션(Annotation)을 의미한다. 어노테이션이라는 단어의 사전적 의미는 '주석'이라는 의미인데, 실제 코드에서 어노테이션은 주석과 같은 기능을 하는 것처럼 보인다. 클래스 class, 메소드 method, 필드 field 등 다양한 요소에 어노테이션을 적용할 수 있다. 어노테이션은 소스 코드에 메타 데이터(meta data: 데이터의 구조, 정보, 표준화 한 것을 나타내는 데이터)를 추가하여 컴파일러에게 특정 작업을 수행하도록 지시하는 역할을 한다.

 Java 에서 기본적으로 제공하는 어노테이션이 있고, 커스텀화하여 자신만의 어노테이션을 사용할 수도 있다. 그러나 많은 사람들이 협업하는 개발 환경에서 기본적인 어노테이션을 많이 사용하기 때문에, 자주 쓰이는 어노테이션의 종류와 기능을 아는 것이 좋다.

 

2. Java ~ Spring 개발 에서 많이 쓰이는 어노테이션 종류

 

1) Java

@Override: 메소드를 오버라이드 한다는 의미, 현 메소드가 상위 클래스나 인터페이스의 메소드를 재정의 한다는 것을 나타낸다.

 

2) Spring

@GetMapping: HTTP GET 요청에 대한 핸들러 메소드를 지정하는데 사용. 특정 URL에 대해 GET 요청을 처리하는 메소드를 mapping 할 때 사용된다. (@Controller 나 @RestController 어노테이션이 지정된 클래스에서 해당 메소드를 작성해야 한다.)

@PostMapping: HTTP POST 요청에 대한 핸들러 메소드를 지정하는데 사용. 특정 URL에 대해 POST 요청 처리하는 메소드 mapping. (POST는 '후' 의 의미를 가진다. 회원 관리 예제에서도 page 작업이 끝나고 redirect 할 때 @PostMapping 을 사용했다.)

@Transactional: (커밋이 완료 될 때까지 DB에 내용 적용하지 않는다. 트랜잭션으로 묶인 과정 중간에 오류가 나면 Rollback 한다. 한 단위로 움직이게 만듦) 트랜잭션 처리를 만들 때 사용하고, 메소드나 클래스에 적용된다.

@Controller: 스프링 MVC에서 사용되며, 컨트롤러 클래스임을 나타낸다.

@Autowired: 의존성 주입을 실행할 때 사용. 이 어노테이션을 필드, 생성자, Setter 메소드 등에 적용하면 스프링 컨테이너는 해당 종속성을 찾아 자동으로 주입한다. 이는 객체 간의 결합도를 낮추고 유연한 코드를 작성하게 한다.

@Configuration: Java 기반의 설정 클래스 표시. 스프링 빈 등록 / 의존성 주입 설정 등의 특징을 가진다.

@Bean: 스프링 컨테이너에 Bean 객체 등록하는데 사용. 일반적으로 @Configuration 어노테이션이 지정된 클래스에서 해당하는 메소드를 작성한다.

@Service: 비즈니스 로직을 처리하는 서비스 클래스를 표시할 때 사용. 스프링 컨테이너에 Bean으로 등록 된다.

 

3) Jnit 프레임워크에서 사용

@Test: 테스트 메소드를 나타낸다.

@Before / @After: 각각 테스트 메소드 실행 전, 실행 후에 해당 메소드를 실행하라고 지시한다.