본문 바로가기
간단 정리/Spring

[Spring] 내가 보려고 만든 각종 어노테이션 간단 정리

by kim-dev 2024. 1. 9.
반응형
  • @Component: Spring Container에 자동 등록.
  • @Controller: Presentation 계층에서 Controller 명시.
  • @Service: Business 계층에서 Service 명시.
  • @Repository: Persistence(영속성) 계층에서 DTO 명시 ← DB와 가장 가까움.
    JpaRepository<>나 CRUDReposiroty<>를 상속받아서 쓰면 따로 메서드 구현 없이 손쉽게 사용할 수도 있음.
  • @Bean: 내가 직접 만든 클래스가 아니라, 외부 라이브러리에서 가져온 클래스를 new 하여 자동 등록.
  • @Configuration: 설정 파일을 명시하여 Bean으로 등록 → 싱글톤을 유지해주므로 작성하는 게 좋음.
  • @Required: 반드시 프로펄티즈 파일을 사용하여 값을 주입받게 함.
  • @Autowired, @Qualifier() : 같은 타입의 Bean 객체가 있으면 해당 아이디를 적어 원하는 Bean이 주입되게 함. @Resource: @Autowire는 타입으로 Bean객체 연결하는 반면 @Resource는 이름으로 연결
  • @Lazy: @Component나 @Bean Annotation과 같이 쓰는데 Class가 로드될 때 스프링에서 바로 bean등록을 마치는 것이 아니라 실제로 사용될 때 로딩이 이뤄지게 하는 방법.
  • @Value: 프로펄티즈에서 값을 가져와서 사용.
  • @RequestBody: 요청이 온 데이터(JSON이나 XML형식)를 바로 Class나 model로 매핑하기 위한 Annotation.
    POST나 PUT, PATCH로 요청을 받을때에, 요청에서 넘어온 body 값들을 자바 타입으로 파싱해줌.
  • @RequestHeader: Request의 header값을 가져옴.
  • @RequestParam: @PathVariable과 비슷하다. request의 parameter에서 가져오는 것이다. method의 파라미터에 사용된다. ?moviename=thepurge 와 같은 쿼리 파라미터를 파싱해준다.
    HTTP GET 요청에 대해 매칭되는 request parameter 값이 자동으로 들어간다. url 뒤에 붙는 parameter 값을 가져올 때 사용한다. http://localhost:8080/home?index=1&page=2
  • @ResponseBody: HttpMessageConverter을 이용하여 JSON, xml로 요청에 응답할 수 있게 해준다.
    @RestController가 붙어 있다면 쓸 필요 x, 그러나 @Controller라면 이걸 써서 HttpResponse로 응답 가능!
  • @PathVariable: 해당 URL에서 {특정값}을 변수로 받아올 수 있다.
    @RequestParam은 ?특정값=x 형태, @PathVariable은 {특정값} 형태.
  • @Transactional: 메서드에 트랜잭션을 설정. 이걸 설정한 메서드 내부에서 일어나는 모든 로직은 모두 성공(commit)하거나 모두 실패(rollback).
  • @Cacheable: 해당 메서드를 최초 호출 후 캐시에 적재하여, 다음 호출부터는 캐시에서 결과를 가져와서 효율성을 보장.
    그러나 항상 입력과 출력이 같은 순수 함수에 적용해야 한다.

  • @ArgsConstructor: 생성자 생성.
  • @Builder: .builder()를 통해 객체를 생성할 수 있도록 해줌.
  • @Data

  • @Entity: 실제 DB 테이블과 매칭될 객체임을 명시.
  • @Id: 해당 테이블의 PK임을 명시. @GeneratedValue: PK의 생성 규칙을 명시. Auto_increment가 무난.
  • @Column: 해당 테이블의 컬럼임을 명시. 굳이 안 써줘도 모두 컬럼으로 들어가지만, 해당 컬럼의 길이나 타입 등 기본 설정을 바꿔주기 위해 사용.
  • @JoinColumn(name=””): 아마 1:N 관계에서 N에 붙여주는 FK 명시 ?
    mappedBy: @OneToMany에 파라미터로 붙어서, ‘난 연관관계의 주인이 아님’을 명시.

어노테이션은 아직 훨씬 많지만, 제가 공부하면서 자주 접한 것들로만 간단하게 모아봤습니다.
궁금한 걸 찾아볼 때마다 계속 추가하겠읍니다.