Spring@RequiredArgConstructorを使用して「注入作成者」を宣言


依存性注入のタイプは、Constructor(생성자)SetterFieldである.
  • 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を使用して注入構造関数を宣言する方法


    注入コンストラクタの欠点は,上のコンストラクタ(コンストラクタ)コードのようにコンストラクタの作成が困難であることである.しかし、これを補うために、롬복を用いて生成者注入方式を簡単に符号化することができる.
    @RequiredArgsConstructorfinal追加フィールドを自動的に生成するジェネレータまたは@NotNullフィールド注入を使用した既存のサービス
    @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;
            }
            ...