본문 바로가기

스프링부트

[Lombok] @RequiredArgsConstructor

의존성주입의 종류로는 Constructor(생성자), Setter, Field 타입이 있는데,

@RequiredArgsConstructor 는 Lombok에서 제공하는 어노테이션으로 스프링에서 DI(의존성 주입)의 방법 중에 생성자 주입을 임의의 코드없이 자동으로 설정해준다

 

@RequiredArgsConstructor는 초기화 되지않은 final 필드나, @NonNull 이 붙은 필드에 대해 생성자를 생성해 줍니다.

 

새로운 필드를 추가할 때 다시 생성자를 만들어서 관리해야하는 번거로움을 없애준다. (@Autowired를 사용하지 않고 의존성 주입)

 

@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;
        }
        ...

 

@RequiredArgsConstructor 를 활용한 생성자 주입

@Service
    @RequiredArgsConstructor
    public class BannerServiceImpl implements BannerService {
    
        private final BannerRepository bannerRepository;
    
        private final CommonFileUtils commonFileUtils;
        ...

 

참고: 의존성 주입의 예시

 

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;
    }

 

 

참고

https://velog.io/@developerjun0615/Spring-RequiredArgsConstructor-%EC%96%B4%EB%85%B8%ED%85%8C%EC%9D%B4%EC%85%98%EC%9D%84-%EC%82%AC%EC%9A%A9%ED%95%9C-%EC%83%9D%EC%84%B1%EC%9E%90-%EC%A3%BC%EC%9E%85

'스프링부트' 카테고리의 다른 글

[펌]JSP 사용하기  (0) 2016.06.22
[펌]spring boot 버전에 따른 외부 톰캣 버전 설정  (0) 2016.06.22