[Spring] Annotation

2023. 10. 18. 18:33·Spring

Annotation 이란?

Annotation(@)은 사전적 의미로는 주석이라는 뜻이다.
자바에서 Annotation은 코드 사이에 주석처럼 쓰이며 특별한 의미, 기능을 수행하도록 하는 기술이다.
즉, 프로그램에게 추가적인 정보를 제공해주는 메타데이터라고 볼 수 있다.
* meta data : 데이터를 위한 데이터

 

다음은 어노테이션의 용도를 나타낸 것이다.

컴파일러에게 코드 작성 문법 에러를 체크하도록 정보를 제공한다.

소프트웨어 개발 툴이 빌드나 배치시 코드를 자동으로 생성할 수 있도록 정보를 제공한다.

실행시(런타임시)특정 기능을 실행하도록 정보를 제공한다.

 

기본적으로 어노테이션을 사용하는 순서는 다음과 같다.

  1. 어노테이션을 정의한다.
  2. 클래스에 어노테이션을 배치한다.
  3. 코드가 실행되는 중에 Reflection을 이용하여 추가 정보를 획득하여 기능을 실시한다.

이때, "Reflection(리플렉션)"은 주로 소프트웨어 개발과 프로그래밍에서 사용되는 개념으로, 프로그램이 자기 자신을 조사하고 수정할 수 있는 능력을 가리킨다. 이것은 프로그램이 런타임(runtime) 중에 자신의 구조, 클래스, 메서드 등에 대한 정보를 검사하거나 조작할 수 있는 기능을 의미한다. 

 

SpringBoot의 대표적인 Annotation과 그 역할


1. @Component: 스프링 컨테이너에게 해당 클래스를 스프링 빈으로 등록하라고 지시한다. 이 어노테이션을 사용하면 클래스를 자동 검색하고 빈으로 등록할 수 있다.

2. @Controller: Spring MVC 웹 애플리케이션에서 컨트롤러 클래스를 정의할 때 사용한다. HTTP 요청을 처리하고 뷰를 렌더링하는 데 도움을 준다.

3. @Service: 비즈니스 로직을 처리하는 서비스 클래스를 정의할 때 사용한다. 주로 서비스 레이어에서 사용된다.

4. @Repository: 데이터 액세스 객체(DAO)를 정의할 때 사용한다. 데이터베이스와 상호 작용하고 데이터 조작을 담당한다.

5. @Autowired: 의존성 주입을 수행한다. 이 어노테이션을 사용하여 스프링이 필요한 의존성을 주입하도록 지시할 수 있다.

6. @Configuration: 스프링 빈 구성 파일을 정의할 때 사용한다. Java 기반 구성을 선언적으로 지정하는 데 사용된다.

7. @Bean: @Configuration 클래스 내에서 빈을 정의할 때 사용한다. 스프링 컨테이너에 수동으로 빈을 추가할 수 있다.

8. @Qualifier: 여러 구현 중에서 어떤 빈을 주입할지 지정한다. @Autowired와 함께 사용된다.

9. @Value: 프로퍼티 파일에서 값을 주입하거나, 환경 설정 정보를 빈에 주입할 때 사용된다.

10. @RequestMapping: Spring MVC에서 웹 요청을 처리하는 메서드를 정의할 때 사용한다. URL과 메서드를 매핑한다.

11. @Transactional: 트랜잭션 관리를 위해 사용된다. 메서드나 클래스에 이 어노테이션을 붙이면, 메서드 호출은 트랜잭션으로 감싸진다.

12. @Secured, @PreAuthorize, @PostAuthorize: 보안 관련 어노테이션으로, 메서드나 클래스의 접근 권한을 지정한다.

13. @Scheduled: 일정한 주기로 메서드를 실행하기 위해 사용된다. 예를 들어, 일정한 주기로 배치 작업을 수행하는 데 유용하다.

14. @Async: 비동기 메서드 호출을 정의한다. 메서드가 비동기로 실행될 수 있도록 한다.

저작자표시 (새창열림)

'Spring' 카테고리의 다른 글

[Spring] web.xml 한글 필터  (0) 2024.05.20
[Spring] File Upload  (0) 2024.05.20
[Spring] Maven Project  (0) 2024.05.20
[Spring] Annotation(Lombok)  (0) 2024.05.20
[Spring] MVC  (0) 2024.05.20
'Spring' 카테고리의 다른 글
  • [Spring] File Upload
  • [Spring] Maven Project
  • [Spring] Annotation(Lombok)
  • [Spring] MVC
whkim98
whkim98
꾸준히 내 것으로 만드는 게시글을 작성하자
  • whkim98
    내 일기장
    whkim98
  • 전체
    오늘
    어제
    • 분류 전체보기
      • JAVA
      • JavaScript
        • Node
        • React
      • PYTHON
      • GitHub
      • DJANGO
      • Project
        • Insty
        • ERP
      • Cloud
        • NAVER CLOUD Web DevOps
        • Public
      • 자격증
        • SQLD
        • 정보처리기사
        • ADsP
        • 리눅스마스터
        • AWS
      • 코딩테스트
        • 프로그래머스 Lv0
        • 프로그래머스 Lv1
      • Spring
      • Tools
        • Postman
        • eGov
      • WEB
      • CS
      • DevOps
  • 블로그 메뉴

    • 홈
    • GitHub
    • 방명록
  • 링크

    • GitHub
  • 공지사항

  • 인기 글

  • 태그

    django
    정보처리기사
    spring
    annotation
    gitbash
    CORS
    RDBMS
    github
    코딩
    AdSP
    코테
    web
    SQLD
    코딩테스트
    해시 암호화
    AWS
    html
    eGov
    프로그래머스
    Cloud
    Tomcat
    js
    node
    React
    Python
    Postman
    Java
    git
    jsp
    javascript
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
whkim98
[Spring] Annotation
상단으로

티스토리툴바