SpringBoot/졸과
@RequiredArgsConstructor
브리오
2024. 7. 16. 11:16
자바에선 특정 클래스를 사용하기 위해선 heap영역에 그 클래스를 올려야 하는데 일일이 작업하기 쉽지않다
그래서 IOC를 통해서 모든 클래스를 한번에 heap에 올리고 DI를 이용해서 각 클래스를 하나만 생성해서 관리한다
이때 DI는 Constructor(생성자),Setter,Field 타입이 있다
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 를 활용한 생성자 주입
@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;
}
...