ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 스프링 어노테이션 정리 (추가 예정)
    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 상속받아서 사용함

     

     

    출처)

    https://mangkyu.tistory.com/49

Designed by Tistory.