inblog logo
|
{CODE-RYU};
    SPIRNG

    의존성 주입(Dependency Injection)

    Jan 30, 2024
    의존성 주입(Dependency Injection)
    Contents
    1. 생성자 주입2. @AllArgsConstructor 사용 3. @RequiredArgsConstructor 사용
     
    Spring 관련 용어 정리 (IoC , 컨포넌트 스캔 , Bean , 의존성 주입) - {CODE-RYU};
    SPIRNG
    Spring 관련 용어 정리 (IoC , 컨포넌트 스캔 , Bean , 의존성 주입) - {CODE-RYU};
    https://inblog.ai/coderyu1/spring-관련-용어-정리-ioc-컨포넌트-스캔-bean-의존성-주입-15060?traffic_type=internal
    Spring 관련 용어 정리 (IoC , 컨포넌트 스캔 , Bean , 의존성 주입) - {CODE-RYU};
     
    의존성 주입은 이전 블로그에서 간단하게 설명했다.
     
    의존성 주입은 클래스A와 클래스B가 서로 의존 상태일 때, 클래스를 생성하지 않고 외부에서 주입받아 사용한다. 외부의 클래스를 사용할 때 매번 새로운 객체를 만들어 사용하게 되면 메모리 부하가 발생하게 된다. 따라서 의존성 주입을 new 를 하지 않고 의존성 주입을 하는 법을 정리하겠다.
     
    의존성 주입에는 크게 3가지가 있다.
     

    1. 생성자 주입

     
    @Controller public class UserController { private UserRepository userRepository; // 의존성 주입 받기 위해 만듬. 의존성 주입을 받을 떄 final을 붙여서 사용함 private HttpSession session ; public UserController(UserRepository userRepository) { this.userRepository = userRepository; // 생성자를 만들어서 디폴트 생성자를 제거함. }
     
    클래스에 외부 클래스의 객체를 생성자를 통해 초기화한다.
     
    @PostMapping("/login") public String login(UserRequest.JoinDTO requsetDTO){ User user = userRepository.findByUsernameAndPaaword(requsetDTO) }
     
    생성자를 통해 외부 클래스 UserRepository 객체를 만들어 호출할 수 있다.
     
     

    2. @AllArgsConstructor 사용

    @AllArgsConstructor 은 lombok에서 제공하는 라이브러리 어노테이션으로 , 사용하게 되면 생성자를 자동으로 만들어준다.
     
    @AllArgsConstructor @Controller public class UserController { private UserRepository userRepository; // 의존성 주입 받기 위해 만듬. 의존성 주입을 받을 떄 final을 붙여서 사용함 private HttpSession session ; this.userRepository = userRepository; // 생성자를 만들어서 디폴트 생성자를 제거함. @PostMapping("/login") public String login(UserRequest.JoinDTO requsetDTO){ User user = userRepository.findByUsernameAndPaaword(requsetDTO) } }
     

    3. @RequiredArgsConstructor 사용

     
    @RequiredArgsConstructor 역시 Lombok 에서 제공하는 라이브러리 어노테이션으로 ,
    final이나 @NonNull으로 선언된 필드의 생성자를 만들어준다.
     
    @RequiredArgsConstructor @Controller public class UserController { private final UserRepository userRepository; // 의존성 주입 받기 위해 만듬. 의존성 주입을 받을 떄 final을 붙여서 사용함 private final HttpSession session ; this.userRepository = userRepository; // 생성자를 만들어서 디폴트 생성자를 제거함. @PostMapping("/login") public String login(UserRequest.JoinDTO requsetDTO){ User user = userRepository.findByUsernameAndPaaword(requsetDTO) } }
     
     
    💡
    @AllArgsConstructor 는 모든 객체의 생성자를 만든다. 따라서 @RequiredArgsConstructor 를 사용하고 원하는 변수에 final 을 붙여 사응하는 것이 좋다.
     
     
    Share article

    {CODE-RYU};

    RSS·Powered by Inblog