본문 바로가기

Java/[패스트캠퍼스] 50일 포트폴리오 챌린지

[13일차] 10개 프로젝트로 완성하는 백엔드 웹개발(Java/Spring)

수강 강의명
수강 강의명

DI(Dependency Injection)

의존성 주입
한 객체(A)가 다른 객체(B)를 사용할 때 "의존성이 있다"고 한다.  A가 B를 의존한다.
   A -- B : 의존 대상(B)이 변경되면 A에게 영향을 미친다.(강한 결합)
   A -- Interface -- B : 의존 대상(B)의 변화에 영향을 덜 받게 된다.(느슨한 결합)
런타임 시 의존 관계를 맺는 대상을 외부에서 결정하고 주입해 주는 걸 의미한다.
스프링 프레임워크는 DI 기능을 지원하는 프레임워크이다.

 

DI(Dependency Injection) 장점

코드의 유연 : 의존성 주입을 인터페이스 기반으로 설계한다.
변경의 유연 : 객체의 결합도가 낮으면 변경이 용이하고, 테스트하기 좋은 코드가 된다.

 

실습 : DI 프레임워크 만들기

ApplicationContext의 BeanFactory를 만든다.

 

의존성 추가

dependencies {
    implementation 'org.reflections:reflections:0.10.2'

    testImplementation 'org.junit.jupiter:junit-jupiter-api:5.8.1'
    testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.8.1'
}

 

프로덕션 코드 작성

① @Controller 생성 : (적용 가능 대상 : class), (유지 기간 : runtime)
② @Service 생성 : (적용 가능 대상 : class), (유지 기간 : runtime)
③ @Inject 생성(DI 주입) : (적용 가능 대상 : 생성자, 필드, 메서드), (유지 기간 : runtime)
④ Controller와 service를 생성한다.

 

테스트 코드 작성

① BeanFactory 객체를 생성한 다음 이에 대한 테스트 코드를 작성한다.
② setUp() : 테스트 메서드가 호출되기 전에 미리 수행되어야 하는 작업을 작성한다.
     reflections와 beanFactory를 초기화 한다.
     해당 애너테이션이 붙은 클래스 타입의 객체를 반환하는 메서드를 구현한다.
③ 테스트 코드 : beanFactory에서 조회한 인스턴스 값과 service의 값이 널이 아닌지 확인한다.
     작성한 DI 프레임워크가 정상적으로 동작 된다면 service의 값이 널이 아니어야 한다.
     의존성 주입 : controller -- service

 

수강 화면수강 화면
수강 화면

 

본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성하였습니다.

https://bit.ly/43z0P6S

 

패스트캠퍼스 [직장인 실무교육]

프로그래밍, 영상편집, UX/UI, 마케팅, 데이터 분석, 엑셀강의, The RED, 국비지원, 기업교육, 서비스 제공.

fastcampus.co.kr

 

#패스트캠퍼스 #포트폴리오 #직장인자기계발 #환급챌린지 #포트폴리오챌린지 #패스트캠퍼스후기 #초격차패키지 #오공완