이전 글에서 설명했던 DI(Dependency Injection)을 직접 작성해보려고 합니다!!! (드디어!!!)
우선, 이클립스에 새 프로젝트를 하나 만들고, main 함수에 작성해줍시다.
원하는 클래스와 인터페이스 작성하기
Exam 인터페이스 생성하기
그리고 Exam이라는 인터페이스를 하나 생성해줍니다. 생성할 때 패키지명에 .entity를 붙여 다른 패키지로 생성해줍니다.
생성된 Exam 인터페이스 안에 total()
함수와 avg()
함수를 정의해줍시다.
NewExam 클래스 생성하기
아까 빨간줄이 뜨던 NewExam도 entity 패키지 안에 class를 자동 생성해주면
이렇게 생성이 완료됩니다!
생성된 순서를 보시면 내가 원하는 클래스와 인터페이스 작성 > 인터페이스 작성 > 클래스 작성 순으로 되시는 것을 확인할 수 있습니다. (이것을 TopDown 방식이라고 합니다.)
NewExam 구현하기
NewExam 내부를 각 함수들의 역할에 맞게 구현하는 과정에서 avg() 함수의 반환값이 float으로 변경되어야 했습니다.
이때, 인터페이스인 Exam에도 반환값이 float으로 바뀌어야함에 주의합시다!
ExamConsole interface 생성하기
마찬가지로 요번에도 ExamConsole 인터페이스와 InlineExamConsol 클래스를 만들어봅시다. 이번엔 ui 패키지에 넣도록 합니다.
아래 사진을 보시면 제가 이미 생성한 ExamConsole의 인터페이스를 InlineExamConsole 클래스 생성과정에서 자바가 자동 상속해주었습니다.
생성자를 자동 완성하고 싶을 때 Ctrl+Shift 키를 이용하여 만들 수 있습니다! 만약 내가 원하는 변수를 넣은 생성자를 만들고 싶다면 위의 사진처럼 생성할 수 있습니다.
InlineExamConsole 구현
InlineExamlConsole 내부 코드를 구현하였습니다! 이때 Exam 인터페이스를 import해야하는 데 단축키는 Ctrl+Shift+O
입니다
실행 결과
total is 0, avg is 0.000000
GridExamConsole 생성하기
이렇게 다른 클래스를 만들어서 ExamConsole 변수에 넣어 사용할 수 있습니다.
ExamConsole로 선언된 변수가 InlineExamConsole 혹은 GridExamConsole을 조립하면서 바꿔서 사용할 수 있는 것을 확인할 수 있었습니다. 이런 방식을 DI(Dependecy Injection)이라고 합니다!
소스코드를 직접 짜보니 훨씬 이해가 쉽네요!!
DI를 작업할 때 플러그인을 설치해서 좀 더 사용하기 쉽게 할 수 있습니다!
그럼 플러그인 설치 과정을 봅시다!
이클립스 마켓 플레이스를 들어가주세요
Spring Tools를 설치해줍시다!
자 이제 spring.di 패키지에서 New > others를 클릭해 밑의 보이는 spring bean 파일을 생성해줍시다. (setting.xml이란 이름으로 생성해주었습니다.)
설정 파일 확인
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
</beans>