diff --git a/spring/di/Program.java b/spring/di/Program.java index 7ededf7..33f7fc8 100644 --- a/spring/di/Program.java +++ b/spring/di/Program.java @@ -1,17 +1,18 @@ package spring.di; +import org.springframework.context.ApplicationContext; +import org.springframework.context.support.ClassPathXmlApplicationContext; + import spring.di.entity.Exam; import spring.di.entity.NewlecExam; import spring.di.ui.ExamConsole; -import spring.di.ui.GridExamConsole; -import spring.di.ui.InlineExamConsole; public class Program { public static void main(String[] args) { Exam exam = new NewlecExam(); - ExamConsole console = new InlineExamConsole(exam); // DI + //ExamConsole console = new InlineExamConsole(exam); // DI //ExamConsole console = new GridExamConsole(exam); /* @@ -21,6 +22,19 @@ public class Program { 같은 메서드를 호출하게되는 위 코드의 수정을 대신해줄 수 있도록 하는 기능이 Spring의 DI다. */ + + // 해당 클래스 사용하기위해서 + // Maven 프로젝트로 바꿔서 빌드툴을 사용하도록 하였고 + // Maven Repository에가서 Spring context를 dependency해주었음. + ApplicationContext context = + new ClassPathXmlApplicationContext("spring/di/setting.xml"); + + + //ExamConsole console = (ExamConsole)context.getBean("console"); + ExamConsole console = context.getBean(ExamConsole.class); + console.setExam(exam); + + console.print(); } diff --git a/spring/di/Student.java b/spring/di/Student.java new file mode 100644 index 0000000..0d397fe --- /dev/null +++ b/spring/di/Student.java @@ -0,0 +1,22 @@ +package spring.di; + +import spring.di.entity.CableMouse; +import spring.di.entity.Mouse; +import spring.di.ui.Computer; + +public class Student { + + public static void main(String[] args) { + + Computer computer = new Computer(); + + Mouse mouse = new CableMouse(); // 유선마우스 + //Mouse mouse = new WireLessMouse(); // 무선마우스 + + // 작업을 위한 준비. 마우스 연결 + computer.connectMouse(mouse); + // 연결확인 + computer.mouseCheck(); + + } +} diff --git a/spring/di/entity/CableMouse.java b/spring/di/entity/CableMouse.java new file mode 100644 index 0000000..de517b3 --- /dev/null +++ b/spring/di/entity/CableMouse.java @@ -0,0 +1,20 @@ +package spring.di.entity; + +public class CableMouse implements Mouse{ + @Override + public void clickR() { + System.out.println("[ 유선 R ]"); + } + + @Override + public void clickL() { + System.out.println("[ 유선 L ]"); + } + + @Override + public void mouseCheck() { + System.out.println(" 유선마이스 연결 확인 "); + clickR(); + clickL(); + } +} diff --git a/spring/di/entity/Mouse.java b/spring/di/entity/Mouse.java new file mode 100644 index 0000000..7246b8e --- /dev/null +++ b/spring/di/entity/Mouse.java @@ -0,0 +1,10 @@ +package spring.di.entity; + +public interface Mouse { + + void clickR(); + void clickL(); + + void mouseCheck(); + +} diff --git a/spring/di/entity/WireLessMouse.java b/spring/di/entity/WireLessMouse.java new file mode 100644 index 0000000..d253fc1 --- /dev/null +++ b/spring/di/entity/WireLessMouse.java @@ -0,0 +1,22 @@ +package spring.di.entity; + +public class WireLessMouse implements Mouse { + + @Override + public void clickR() { + System.out.println("[ 무선 R ]"); + + } + + @Override + public void clickL() { + System.out.println("[ 무선 L ]"); + } + + @Override + public void mouseCheck() { + System.out.println(" 무선마이스 연결 확인 "); + clickR(); + clickL(); + } +} diff --git a/spring/di/setting.xml b/spring/di/setting.xml new file mode 100644 index 0000000..29bfdae --- /dev/null +++ b/spring/di/setting.xml @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + diff --git a/spring/di/ui/Computer.java b/spring/di/ui/Computer.java new file mode 100644 index 0000000..6511b0e --- /dev/null +++ b/spring/di/ui/Computer.java @@ -0,0 +1,14 @@ +package spring.di.ui; + +import spring.di.entity.Mouse; + +public class Computer { + private Mouse mouse ; + + public void connectMouse(Mouse mouse) { + this.mouse=mouse; + }; + public void mouseCheck() { + mouse.mouseCheck(); + }; +} diff --git a/spring/di/ui/ExamConsole.java b/spring/di/ui/ExamConsole.java index e65b37e..eb82ab5 100644 --- a/spring/di/ui/ExamConsole.java +++ b/spring/di/ui/ExamConsole.java @@ -1,5 +1,8 @@ package spring.di.ui; +import spring.di.entity.Exam; + public interface ExamConsole { void print(); + void setExam(Exam exam); } diff --git a/spring/di/ui/GridExamConsole.java b/spring/di/ui/GridExamConsole.java index dfa5c1d..eace3b7 100644 --- a/spring/di/ui/GridExamConsole.java +++ b/spring/di/ui/GridExamConsole.java @@ -5,10 +5,14 @@ import spring.di.entity.Exam; public class GridExamConsole implements ExamConsole { private Exam exam; + + public GridExamConsole() { + } public GridExamConsole(Exam exam) { this.exam = exam; } + @Override public void print() { System.out.println("┌──────────┬──────────┐"); @@ -17,5 +21,12 @@ public class GridExamConsole implements ExamConsole { System.out.printf("│ %3d │ %3.2f │\n", exam.total(), exam.avg()); System.out.println("└──────────┴──────────┘"); } + + @Override + public void setExam(Exam exam) { + this.exam = exam; + } + + } diff --git a/spring/di/ui/InlineExamConsole.java b/spring/di/ui/InlineExamConsole.java index 159937e..70ad151 100644 --- a/spring/di/ui/InlineExamConsole.java +++ b/spring/di/ui/InlineExamConsole.java @@ -6,6 +6,9 @@ public class InlineExamConsole implements ExamConsole { private Exam exam; + public InlineExamConsole() { + } + public InlineExamConsole(Exam exam) { this.exam = exam; } @@ -15,4 +18,9 @@ public class InlineExamConsole implements ExamConsole { System.out.printf("total is %d, avg is %f\n", exam.total(), exam.avg()); } + @Override + public void setExam(Exam exam) { + this.exam=exam; + } + }