티스토리 뷰

WEB/자바

어노테이션이 궁금합니다.

silverline79 2026. 3. 25. 21:22

**어노테이션(Annotation)**은 자바 코드에 붙이는 '특별한 주석' 또는 **'메타데이터'**입니다.

일반적인 주석(//)이 사람에게 설명을 남기는 것이라면, 어노테이션은 스프링 프레임워크나 자바 실행 환경(JVM)에게 "이 클래스는 이런 역할이니까 이렇게 처리해!"라고 명령을 내리는 표식입니다.


1. 스프링에서 어노테이션을 쓰는 이유

예전에는 XML 파일에 수백 줄의 설정을 적어야 했습니다. 하지만 어노테이션이 등장하면서 코드 위에 @ 하나만 붙이면 스프링이 알아서 객체를 만들고 연결해 줍니다.


2. 주요 어노테이션 종류 (역할별)

① 객체 생성 및 등록 (Bean 등록)

스프링 컨테이너라는 바구니에 담길 객체들을 지정합니다.

  • @Component: 가장 기본. "이 클래스를 객체로 만들어줘"라는 뜻입니다.
  • @Controller: 웹 요청을 받는 컨트롤러임을 선언합니다.
  • @Service: 비즈니스 로직을 수행하는 서비스임을 선언합니다.
  • @Repository: DB에 접근하는 DAO/저장소임을 선언합니다.

② 의존성 주입 (연결)

객체와 객체를 서로 연결해 줍니다.

  • @Autowired: "필요한 객체를 컨테이너에서 찾아서 자동으로 넣어줘"라는 뜻입니다. (주로 Service에서 DAO를 부를 때 사용)

③ 요청 매핑 (URL 연결)

어떤 주소로 들어왔을 때 실행할지 결정합니다.

  • @RequestMapping: 특정 URL 주소를 클래스나 메서드에 연결합니다.
  • @GetMapping / @PostMapping: GET 방식인지 POST 방식인지 세부적으로 나눕니다.

3. 어노테이션이 작동하는 원리 (컴포넌트 스캔)

앞서 설명해 드린 스프링 부트 구동 순서와 연결됩니다.

  1. 스프링 부트가 실행되면 @SpringBootApplication이 붙은 위치부터 하위 패키지를 샅샅이 뒤집니다. (스캔)
  2. @가 붙은 클래스들을 발견하면 "아, 이건 서비스네!", "이건 컨트롤러네!" 하고 판단합니다.
  3. 판단이 끝나면 그 클래스들을 하나씩 **객체(Bean)**로 생성해서 바구니에 담습니다.
  4. 마지막으로 @Autowired가 붙은 곳에 필요한 객체를 쏙쏙 끼워 넣어 줍니다.

4. 실전 예시로 보기

Java
 
@Service // 1. "난 서비스야!"라고 등록
public class UserService {

    @Autowired // 2. "DAO 객체 좀 빌려줘!"
    private UserDAO userDAO;

    public void join() {
        userDAO.insertUser();
    }
}

5. 어노테이션의 장점

  • 코드가 간결해집니다: 복잡한 설정 파일(XML)이 사라집니다.
  • 가독성이 좋아집니다: 클래스 선언부만 봐도 이 객체가 무슨 역할을 하는지(컨트롤러인지 서비스인지) 한눈에 알 수 있습니다.
  • 생산성이 높습니다: 개발자는 로직에만 집중하고, 객체 관리는 스프링에게 맡길 수 있습니다.

※ 해당 내용은 Google Gmini3.0에서 작성되었습니다.

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG more
«   2026/03   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함