Web Programming/SpringBoot

자주쓰는 어노테이션

myHyem 2020. 7. 16. 19:52

스프링 부트를 배우는 중에 모르는 어노테이션들이 상당해서

자주 쓰는 어노테이션만 따로 정리를 해봅니다

 

@SpringBootApplication

 

 

이 친구는

@SpringBootConfiguration + @EnableAutoConfiguration + @ComponentScan

인 복한 접인 친구입니다

간단하게 생각하시면 그냥 스프링 부트의 main method를 표시해준다

라고만 생각해보 사용하는데 지장이 없을 것 같습니다

 

구체적으로는

component를 스캔해서 bean을 생성하고 (@ComponentScan)

스프링부트 설정을 로드하며 (@SpringBootConfiguration)

자동 환경 설정을 수행하는 어노테이션입니다 (@EnableAutoConfiguration)

 

출처 : http://dveamer.github.io/backend/SpringBootAutoConfiguration.html

 

Dveamer

현실에서 살고 있지만 이상에 대한 꿈을 버리지 못한 몽상가의 홈페이지 입니다. 개인적인 기록을 주 목적으로 하며 일상과 프로그래밍 관련 글을 포스팅합니다.

dveamer.github.io

 

@Bean

@Component

 

 

이 친구들은 둘 다 Bean을 생성하는 역할을 담당하는 어노테이션입니다

하지만 @Bean 은 외부 라이브러리들을 Bean으로 등록하고 싶은 경우에 사용되고

@Component는 개발자가 직접 컨트롤이 가능한 Class 등에게 선언하여 사용합니다

 

출처 : https://jojoldu.tistory.com/27

 

@Bean vs @Component

Spring으로 개발을 하다보면 @Bean과 @Component를 언제 써야할지 헷갈릴때가 있다. 둘다 목적이 명확하지 않은 Bean을 생성할때 사용하는 어노테이션인데 왜 2개로 나누어져있나 궁금했었는데, 박재성

jojoldu.tistory.com

 

@Service @Controller

@Repository

 

 

제일 많이 보는 친구들입니다 해당 클래스의 역할을 알립니다

 

@RestController

 

@Controller + @ResponseBody의 역할을 수행하는 친구입니다

MVC의 컨트롤러의 역할을 수행하고 (@Controller)

반환 값으로 JSON/XML 타입의 HTTP 응답을 가집니다 (@ResponseBody)

 

 

@GetMapping @PostMapping @PutMappling @DeleteMapping

@RequestMapping

 

 

맵핑 친구들입니다

기본적으로 요청을 코드로 맵핑시킨다는 공통 역할을 가지고 있습니다

URI를 '클래스 혹은 메서드'에 맵핑시킨다 (@RequestMapping)

HTTP GET 요청을 '메서드'에 맵핑시킨다 (@GetMapping)

HTTP POST 요청을 '메서드'에 맵핑시킨다(@PostMapping)

HTTP PUT 요청을 '메서드'에 맵핑시킨다 (@PutMapping)

HTTP DELETE 요청을 '메서드'에 맵핑시킨다(@DeleteMapping)

결국 @RequestMapping의 하위 세분화 버전입니다

 

 

@Getter @Setter @Data

 

 

Lombok에서 개발자들 편하라고 만들어준

getter, setter 생성 메서드들과

getter, setter, toString 등을 생성시켜주는 어노테이션입니다

 

 

@AllArgsConstructor @NonArgsConstructor @RequireArgsConstructor

 

 

마찬가지로 Lombok입니다

생성자 관련 어노테이션이고 각각

모든 파라미터를 이용하는 생성자, 빈 파라메터파라미터 생성자, final or @Nonnull 파라미터 이용 생성자로

구분됩니다

 

 

출처 : http://ojc.asia/bbs/board.php?bo_table=LecEnterprise&wr_id=115

 

이클립스,롬복(Lonbok)이란?(@Setter, @Getter, @Data, @ToString, @EqualsAndHashCode , @NoArgsConstructor, @RequiredArgsCon

이클립스,롬복(Lonbok)이란?(@Setter, @Getter, @Data, @ToString, @EqualsAndHashCode,@NoArgsConstructor, @RequiredArgsConstructor, @AllArgsConstructor)자바개발시 도메인 오브젝트등 모델 객체를 생성할 때 세터/게퍼/toString/hash

ojc.asia

 

 

@GeneratedValue

 

 

데이터의 기본키를 할당하는 방식을 설정해줍니다

IDENTITY : 기본키 할당방식을 DB에 위임

SEQUENCE : DB SEQUENCE를 이용하여 기본키할당

TABLE : KEY 생성 전용 테이블 이용

AUTO : 밴더에 관계없이 DB가 알아서 기본키 할당

저는 보통 IDENTITY를 사용합니다

 

 

 

@Builder

 

 

 

lombok에 포함된 어노테이션이며

@Getter와 함께 자주 사용하는 어노테이션입니다

기존 Bean 패턴의 getter를 대신하는 build 패턴을 자동으로 생성해줍니다

build 패턴을 자주 사용하지 않아서 정확한 사용법이나 장점을 잘 모르겠습니다

어떤 코드에는 생성자위에 선언되어 있고 어떤코드에는 클래스 위에 선언되어 있기도 하더군요

테스트해본 바로는 클래스 위에 선언하면 전체 인자를 이용한 생성자가 자동으로 생성되고

그에 따른 build 패턴이 생성되는 것 같습니다

 

 

 

 

이 정도로 정리하고 후에 더 궁금해서 찾아보게 되면 추가해보도록 하겠습니다

감사합니다

'Web Programming > SpringBoot' 카테고리의 다른 글

ORM, JPA, Hibernate 이란 ?  (0) 2020.11.12