스프링 부트를 배우는 중에 모르는 어노테이션들이 상당해서
자주 쓰는 어노테이션만 따로 정리를 해봅니다
@SpringBootApplication
이 친구는
@SpringBootConfiguration + @EnableAutoConfiguration + @ComponentScan
인 복한 접인 친구입니다
간단하게 생각하시면 그냥 스프링 부트의 main method를 표시해준다
라고만 생각해보 사용하는데 지장이 없을 것 같습니다
구체적으로는
component를 스캔해서 bean을 생성하고 (@ComponentScan)
스프링부트 설정을 로드하며 (@SpringBootConfiguration)
자동 환경 설정을 수행하는 어노테이션입니다 (@EnableAutoConfiguration)
출처 : http://dveamer.github.io/backend/SpringBootAutoConfiguration.html
@Bean
@Component
이 친구들은 둘 다 Bean을 생성하는 역할을 담당하는 어노테이션입니다
하지만 @Bean 은 외부 라이브러리들을 Bean으로 등록하고 싶은 경우에 사용되고
@Component는 개발자가 직접 컨트롤이 가능한 Class 등에게 선언하여 사용합니다
출처 : https://jojoldu.tistory.com/27
@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
@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 |
---|