Post

Spring: 스프링의 어노테이션(Annotations) 사용법

Spring: 스프링의 어노테이션(Annotations) 사용법

스프링(Spring)에서 어노테이션@[어노테이션이름] 이라는 형식으로 특정 클래스, 메소드, 변수의 맨 위에 붙여 쓰며 일반적으로 해당 구역의 기능을 확장하는 역할을 합니다.

종류

@Component

Bean을 생성하며(클래스의 인스턴스화), 클래스 코드 바로 위에 붙여 사용합니다. 멤버 필드 내 값은 지정되지 않습니다. 사용 시 클래스 이름의 앞 글자만 소문자만 바꾸고 사용합니다. 예를 들어 VO 클래스의 이름이 Product이고 @Component를 설정한 경우 아이디는 product입니다. 참고로 @Component와 동일한 기능을 가지면서 좀 더 명확한 의미를 부여할 수 있는 태그들로 @Repository, @Service 등이 있습니다.

@Repository

저장소라는 뜻으로 DAO(Database Access Object)에 부여합니다.

@Service

서비스라는 뜻으로 DAO와 컨트롤러를 연결하는 서비스에 부여합니다.

@Value(“값”)

VO 클래스의 멤버 필드 바로 위에 붙여 사용합니다.

@Component(“아이디”)

기본 아이디 외에 새로운 아이디를 지정합니다.

@Scope(“prototype”)

싱글턴 패턴을 사용하고 싶지 않을 때 지정하며, @Component 밑에 붙여 사용합니다.

@Autowired

프로젝트 내부 전체를 검색해서, 해당 타입의 인스턴스가 1개만 있는 경우 그 인스턴스를 자동으로 연결합니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
@Autowired
private Product vo;

/* 프로젝트 내부를 검색해서 아래 Product(@Component)를 자동으로 연결함 */
/* 다음과 유사: private Product vo = project.getSomewhere(? instanceof Product) */

============================================

@Component
public class Product {

    private int pid; // 1001

    private String productName; // Shampoo

    (...)
}

@Autowired @Qualifier(“아이디”)

프로젝트 내 같은 타입의 인스턴스가 2개 이상 있는 경우 어떤 인스턴스를 선택해서 사용할 지 결정합니다,

컨텍스트 어노테이션 설정 (컨텍스트 XML)

1
2
<context:component-scan base-package="[루트 패키지명]">
</context:component-scan>

 

기타 알아두면 유용한 어노테이션

@Override

이 메소드는 상위 클래스에서 오버라이딩 된 메소드라는 것을 명시적으로 보증하는 역할을 합니다. 잘못된 오버라이딩이거나 혹은 오버라이딩이 아닌데 이 어노테이션을 붙이면 컴파일 에러가 발생합니다.

@Deprecated

프로그램을 만들 때 특정 메소드(기능)에 부여하며 호환성 문제 때문에 일단 사용은 가능하도록 했지만 옛날 방식, 옛날 기술 등이라 사람들에게 점차적으로 사용하지 않도록 유도하고자 할 때 사용하는 기능입니다. 외부 라이브러리를 사용하다 보면 많이 볼 수 있습니다.

@SuppressWarnings

컴파일 경고를 무시합니다.

@FunctionalInterface

함수형 인터페이스를 선언합니다.(자바 8 이상, 람다식 관련 글 참고)

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