[Java] 의존성 주입(DI) 장점, 방법, 비교

Sol Kim·2022년 10월 11일
1

Java

목록 보기
2/3
post-thumbnail

의존성 주입(DI)이란?

객체가 사용(의존)할 파라미터를 외부에서 선언하고, 이를 주입받아서 사용하는 방법!

의존성 주입의 장점

응집도를 높이고, 결합도를 낮출 수 있다.
1. 유지보수가 용이하다.
2. 재사용성이 높은 코드가 된다.
3. 기능이 분리되어 가독성이 높아진다.


의존성 주입 종류

  1. Constructor (생성자)
  2. Setter (수정자)
  3. Field (필드)

1. Constructor (생성자)

public class User {
	private String email;
    private String password;
    
    @Autowired
    public User(String email, String password){
    	this.email = email;
        this.password = password;
    }
}

2. Setter (수정자)

public class User {
	private String email;
    private String password;
    
    @Autowired
    public void setEmail(String email){
    	this.email = email;
    }
    
    @Autowired
    public void setPassword(String password){
    	this.password = password;
    }
}

3. Field (필드)

public class User {
	@Autowired
    private String email;
    
    @Autowired
    private String password;
}

그럼 어떤 의존성 주입을 활용하는 게 좋을까?

결론적으로 말하면, 생성자 주입이 가장 안전하다.
1. NullPointerException을 사전 방지하여 Database를 보호가능
2. final로 필드를 선언하여 활용 - 데이터를 보호할 수 있다.
3. 코드를 조금 더 간결하게 만들기 위한 Lombok 어노테이션을 활용할 수 있다.
4. 단위 테스트 코드를 작성하기 편리하다.
5. 객체 생성 시점에서 미리 순환 참조를 발견하고 방지할 수 있다. (스프링/스프링부트에서 해당 됨)





참고한 글 :
https://tecoble.techcourse.co.kr/post/2021-04-27-dependency-injection/
https://yaboong.github.io/spring/2019/08/29/why-field-injection-is-bad/

profile
Junior Developer

0개의 댓글