-
스프링 어노테이션 정리 (추가 예정)Spring Framework 2023. 10. 12. 12:49
@RequiredArgsConstructor
- 의존성 주입 어노테이션
// 기존에 의존성 주입 @Autowired private BoardService boardService; // @RequiredArgsConstructor 사용 @RequiredArgsConstructor public class BoardController { private final BoardService boardService; }@RestController
- @Controller + @RequestBody의 조합
- JSON 형태의 객체를 return하기 위해 사용한다.
- @RequestBody는 사용하지 않아도 된다.
// @RestController 미사용 @Controller @RequiredArgsConstructor public class UserController { private final UserService userService; @GetMapping(value = "/users") public @ResponseBody ResponseEntity<User> findUser(@RequestParam("userName") String userName){ return ResponseEntity.ok(userService.findUser(user)); } } // @RestController 사용 @RestController @RequiredArgsConstructor public class UserController { private final UserService userService; @GetMapping(value = "/users") public ResponseEntity<User> findUserWithResponseEntity(@RequestParam("userName") String userName){ return ResponseEntity.ok(userService.findUser(user)); } }Bean 관련 어노테이션
@Configuration
- 스프링 IOC Container에게 해당 클래스를 Bean 구성 Class임을 알려주는 것이다.
@Component
- Spring(IOC) Container에 Bean을 등록하도록 하는 메타데이터를 기입하는 어노테이션
- 개발자가 직접 작성한 Class를 Bean으로 등록하기 위한 어노테이션이다.
- @Bean과 다르게 @Component는 name이 아닌 value를 이용해 Bean의 이름을 지정한다.
@Bean
- Spring(IOC) Container에 Bean을 등록하도록 하는 메타데이터를 기입하는 어노테이션
- 개발자가 직접 제어가 불가능한 외부 라이브러리등을 Bean으로 만들려할 때 사용된다.
- @Bean어노테이션에 name이라는 값을 이용하면 자신이 원하는 id로 Bean을 등록할 수 있다.
@Primary
- 어노테이션을 붙혀서 우선순위를 지정하는 방식
- 의존성 주입시 우선적으로 빈을 찾게 하면, 여러개의 빈을 찾을 때 원하는 대로 해결 가능
@Qualifier
- 스프링 컨테이너가 여러개의 빈을 찾았을 때, 추가적으로 판단할 수 있는 정보를 주는 원리
- 선택되는 구현체들이나 사용 하는 코드에 @Qualifier("찾는이름")을 작성해야 한다.
- @Primary보다 우선순위가 높다.
lombok 관련 어노테이션
@Data
- class에 모든 필드에 대해 getter setter toString equals 함수를 자동으로 제공해준다.
@Builder
- Build 패턴을 대신 사용해, 객체를 추상화해서 쓴다.
@NoArgsConstructor
- 파라미터가 없는 기본생성자를 만들어준다.
@AllArgsConstructor
- 모든 필드 값을 파라미터로 받는 생성자를 만들어준다.
@RequiredArgsConstructor
- final이나 @NotNull인 필드 값만 파라미터로 받는 생성자를 만들어준다.
@Serial
- 직렬화 어노테이션으로 DTO에 implements Serializable 상속받아서 사용함
출처)
'Spring Framework' 카테고리의 다른 글
Spring AOP에 대한 개념 (0) 2023.10.05 스프링(spring) web.xml 기본 설정 (0) 2023.10.05 spring과 spring boot 비교하기 (0) 2023.10.04 스프링 컨테이너에 대한 개념 (0) 2023.10.04 스프링 프레임워크(spring framework)에 대한 기본 개념 (0) 2023.10.04