@RequiredArgsConstructor

jin·2023년 5월 30일
0

스프링

목록 보기
1/1

@RequiredArgsConstructor

  • 생성자 주입 방법
  • import lombok.RequiredArgsConstructor; lombok에서 지원하는 기능
  • 기존 의존성 주입 방식 의존성 주입 방법에는 1. 생성자 2. setter 3. field 3가지 방법이 있음
    1. Constructor (생성자)

      public  class  ExampleCase {
          
          private  final  ChocolateService  chocolateService;
          private  final  DrinkService  drinkService;
          
          @Autowired
          public ExampleCase(ChocolateService  chocolateService, DrinkService  drinkService) {
         	this.chocolateService = chocolateService;
         	this.drinkService = drinkService;
          }
      }
    2. Setter 주입

      public  class  ExampleCase{
          
          	private  ChocolateService  chocolateService;
          	private  DrinkService  drinkService;
          
          	@Autowired
          	public void  setChocolateService(ChocolateService  chocolateService){
          		this.chocolateService = chocolateService;
          	}
          
          	@Autowired
          	public void  setDrinkService(DrinkService  drinkService){
          		this.drinkService = drinkService;
          	}
        
    3. field 주입

      public  class  ExampleCase{
          
          	@Autowired
          	private ChocolateService  chocolateService;
          
          	@Autowired
          	private DrinkService  drinkService;
          }
  • @RequiredArgsConstructor 어노테이션을 통한 생성자 주입 방식

    위 기존방식 중 생성자주입의 방법을 보면, 직접 생성자를 생성자를 생성해줘야하는 번거로움이 존재함.

    @RequiredArgsConstructor 어노테이션을 사용하면, 생성자를 만들 때, 필드에 주입해주는 방법으로 동작

    		//롬복이 제공하는 어노테이션을 활용한 방식
    		@Service
        @RequiredArgsConstructor
        public class BannerServiceImpl implements BannerService {
        
            private final BannerRepository bannerRepository;
        
            private final CommonFileUtils commonFileUtils;
            ...
    
    		//기존 생성자를 이용한 방식
    		@Service
        public class BannerServiceImpl implements BannerService {
        
            private BannerRepository bannerRepository;
        
            private CommonFileUtils commonFileUtils;
        
            @Autowired
            public BannerServiceImpl(BannerRepository bannerRepository, CommonFileUtils commonFileUtils) {
                this.bannerRepository = bannerRepository;
                this.commonFileUtils = commonFileUtils;
            }
            ...

0개의 댓글