스프링 주요 Annotation 정리

Caesars·2022년 1월 25일
1

Springboot

목록 보기
1/5

목적

어노테이션이 뭔지 얼추는 알고 있습니다. 자동적으로 Bean을 생성해주거나 해당 클래스의 역할을 정해주거나 하는.. 하지만 개발 업무를 하다보면 처음 보는 생소한 Annotation들도 있었습니다. 아마 모든 Annotaion을 나열하는 것은 무리지만 중간중간 기록하면서 정리하고자 합니다.

Annotation이 나온 이유

IT가 발전하면서 프로그램의 규모가 방대해지면서 XML이 가지는 설정정보의 양이 많아진다
--> Annotation은 직관적인 메타데이터 설정이 가능. 왜냐하면 소스코드와 같이 쓰기 때문에
(소스코드와 메타데이터가 결합되는 형태)
--> 시스템 전반에 영향을 주는 메타데이터는 XML로 설정하여 코드로부터 독립적으로 분리되는 것이 바람직하다.

라고 하는데 어느 정도 납득이 가는 것 같기도 하고..

대표적인 Annotation

@Component

개발자가 생성한 Class를 Spring의 Bean으로 등록할 때 사용합니다.
@Controller, @Service , @Repository를 다 포함합니다.

@Component
public class Anno{
}

@Controller, @RequestMapping

Controller : 웹 어플리케이션에서 웹 요청과 응답을 처리하는 클래스 입니다. Spring에게 해당 Class가 Controller의 역할을 한다고 알릴 수 있습니다.
RequestMapping : 요청 들어온 URI의 요청과 Annotation value 값이 일치하면 해당 클래스나 메소드가 실행됩니다.

@Controller                   // 이 Class는 Controller 역할을 합니다
@RequestMapping("/copy")      // 이 Class는 /copy 들어오는 요청을 처리합니다.
public class Controller {
    @RequestMapping(method = RequestMethod.GET)
    public String copy(Model model) {
    }
}

@GetMapping

RequestMapping(Method=RequestMethod.GET)와 동일

@PostMapping

RequestMapping(Method=RequestMethod.POST)와 동일

@RequestParam

URL에 전달되는 파라미터를 메소드의 인자와 매칭시켜, 파라미터를 받아서 처리할 수 있는 Annotation

@Controller                   // 이 Class는 Controller 역할을 합니다
@RequestMapping("/copy")      // 이 Class는 /copy 들어오는 요청을 처리합니다.
public class Controller {
    @RequestMapping(method = RequestMethod.GET)
    public String copy(@RequestParam String name) {
    }
}

@RequestBody

Body에 전달되는 데이터를 메소드의 인자와 매칭시켜, 데이터를 받아서 처리할 수 있는 Annotation 입니다. 클라이언트가 보내는 HTTP 요청 본문(JSON 및 XML 등)을 Java 오브젝트로 변환합니다.

@Controller                   // 이 Class는 Controller 역할을 합니다
@RequestMapping("/copy")      // 이 Class는 /copy 들어오는 요청을 처리합니다.
public class Controller {
    @RequestMapping(method = RequestMethod.POST)
    public String copy(@RequestBody Model model) {
    }
}

@Service

서비스 레이어, 비지니스 로직을 가진 클래스

@Repository

데이터 엑세스 층의 DAO용 어노테이션. 퍼시스턴스 레이어, 영속성을 가지는 속성(파일, 데이터베이스) 클래스

@Resource, @Inject, @Autowired

컨테이너에 생성된 빈(Bean) 객체를 자동으로 주입받을 수 있도록 해주는 어노테이션 입니다.

@Resource@Inject@Autowired
의존JavaJavaxSpring
사용 위치필드, setter필드, 생성자, setter필드, 생성자, setter
Bean 검색 우선순위이름 -> 타입타입 -> 이름타입 -> 이름
Bean 강제 지정@Resource(name="ID")@Inject @Named("ID")@Autowired @Qualifier("ID")
Bean 없을 경우예외 발생예외 발생@Autowired(required=false) 처리하면 예외 발생 방지

@Transactional

  • 데이터베이스 트랜잭션을 설정하고 싶은 메서드에 어노테이션을 적용합니다.
    데이터베이스 로직이 전부 성공하게되거나 하나라도 실패하면 다시 롤백할 수 있게 해주는 어노테이션
  • @Transaction(readOnly=true, rollbackFor=Exception.class) : readOnly는 읽기전용임을 알리고 rollbackFor는 해당 Exception이 생기면 롤백

참조 :

https://codevang.tistory.com/256
http://melonicedlatte.com/2021/07/18/182600.html
https://palyoung.tistory.com/72

profile
잊기전에 저장

0개의 댓글