[Spring] @RequiredArgsConstructor 어노테이션을 사용한 "생성자 주입"
의존성주입의 종류로는 Constructor(생성자),Setter,Field 타입이 있다.
- 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;
    }
}
- 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 어노테이션을 사용한 생성자 주입 방법
생성자주입의 단점은 위의 Constructor(생성자) 코드처럼 생성자를 만들기 번거롭다는 것이다. 하지만 이를 보완하기위해 롬복을 사용하여 간단한 방법으로 생성자 주입 방식의 코딩을 할 수 있다.
@RequiredArgsConstructor
final이 붙거나 @NotNull 이 붙은 필드의 생성자를 자동 생성해주는 롬복 어노테이션
필드 주입방식을 사용한 기존 Service
@Service
    public class BannerServiceImpl implements BannerService {
    
        @Autowired
        private BannerRepository bannerRepository;
    
        @Autowired
        private CommonFileUtils commonFileUtils;@RequiredArgsConstructor 를 활용한 생성자 주입
    @Service
    @RequiredArgsConstructor
    public class BannerServiceImpl implements BannerService {
    
        private final BannerRepository bannerRepository;
    
        private final CommonFileUtils commonFileUtils;
        ...@RequiredArgsConstructor를 사용하지 않으면 원래는 이렇게 생성자 주입을 해야한다
    @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;
        }
        ...Author And Source
이 문제에 관하여([Spring] @RequiredArgsConstructor 어노테이션을 사용한 "생성자 주입"), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@developerjun0615/Spring-RequiredArgsConstructor-어노테이션을-사용한-생성자-주입저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
                                
                                
                                
                                
                                
                                우수한 개발자 콘텐츠 발견에 전념
                                (Collection and Share based on the CC Protocol.)