2018. 6. 2. 20:43ㆍ용어정리/#스프링 삼각형
[ 스프링을 적용하지 않은 방식으로의 코딩 ]
2018 - 06 - 02
우선 스프링에서 예제문을 실행시켜보도록 하자
실습은 STS를 통해 진행됩니다.
1. STS의 File -> New -> Spring Legacy Porject - > Spring MVC Project 를 선택합니다.
2. Project name에 ExpertSpring30을 입력하고 Next 버튼을 클릭합니다.
3. Please specify the top-level package e.g. com.mycompay.myapp*에 com.heaven.mvc를 입력
한 후 Finish 버튼을 입력해 스프링 MVC 프로젝트를 생성합니다.
4. STS 좌측의 Package Explorer에서 src/main/java 밑에 expert001_01 패키지를 만들고 클래스로
Car.java, KoreaTire.java, AmericaTire.java, 인터페이스로 Tire.java, 그리고 이를 테스트해볼 수 있는 Driver.java를 작성하자
Car.java | Tire 생산(new)하고 사용 |
|
Tire.java | 인터페이스 |
|
AmericaTire.java | Tire 인터페이스 구현 |
|
KoreaTire.java | Tire 인터페이스 구현 |
|
Driver.java | 테스트 필드 |
|
Car.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | package expert001_01; public class Car { Tire tire; public Car() { tire = new KoreaTire(); // tire = new AmericaTire(); } public String getTireBrand() { return "장착된 타이어: " + tire.getBrand(); } } | cs |
Tire.java
1 2 3 4 5 6 | package expert001_01; interface Tire { String getBrand(); } | cs |
AmericaTire.java
1 2 3 4 5 6 7 | package expert001_01; public class AmericaTire implements Tire { public String getBrand() { return "미국 타이어"; } } | cs |
KoreaTire.java
1 2 3 4 5 6 7 8 | package expert001_01; public class KoreaTire implements Tire { public String getBrand() { return "코리아 타이어"; } } | cs |
Driver.java
1 2 3 4 5 6 7 8 9 10 11 | package expert001_01; public class Driver { public static void main(String[] args) { Car car = new Car(); System.out.println(car.getTireBrand()); } } | cs |
여기에서 주의 깊게 볼 부분은 Car.java의 new KoreaTire() 부분이다.
바로 자동차가 타이어를 생산(new) 하는 부분. 즉 의존 관계가 일어나고 있는 부분이다.
위의 배포 부분의 경로가 src/main/java 폴더의 export001_01 패키지라면
테스트 를 하기 위해서 src/main/java 폴더에 export001_01 패키지를 만들고
다음과 같은 코드를 작성한다.
CarTest.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | package export001_01; import org.junit.Test; import static org.junit.Assert.*; import expert001_01.Car; public class CarTest { @Test public void 자동차_장착_타이어브랜드_테스트() { Car car = new Car(); assertEquals("장착된 타이어: 코리아 타이어", car.getTireBrand()); } } | cs |
테스트 메서드명이 한글이다.
실제 배포용 코드를 포함한 src/main/java 폴더의 소스에는 한글로 된 메서드명을 권장하지 않지만 배포하지 않는 테스트코드를 포함한 src/test/java 폴더에서는 영어보다는
위와 같이 한글로 정확히 무슨 테스트를 하고 있는지 적어주는 것을 권장한다.
한글로 작성하는 경우 영어보다 더 직관적으로 어떤 테스트를 하고 있는지 알 수 있기 때문이다.
다음으로 src/main/java/export001_01/Driver.java에 마우스 오른쪽 버튼을 클릭한 후 메뉴에서
Run As -> Java Application을 선택한다.
오타가 없다면 STS Console 창에
장착된 타이어: 코리아 타이어
라는 문구가 나타날 것이다.
JUnit Test 클래스도 작성했으니 한번 실행해 보자. src/test/java/export001_01/CarTest.java에
마우스 오른쪽 버튼을 클릭한 후 메뉴에서
Run As -> JUnit Test를 선택한다.
그럼 STS JUnit 창에서 테스트 성공을 의미하는 다음과 같은 초록 막대를 볼 수 있다.
여기까지의 내용을 정리해 보자
자동차는 타이어에 의존한다.
운전자는 자동차를 사용한다.
운전자가 자동차에 의존한다고 봐도 된다.
자동차의 생성자 코드에서 tire 속성에 새로운 타이어를 생성해서 참조할 수 있게 해주었다.
출처
스프링 입문을 위한 자바 객체 지향의 원리와 이해
김종민 저
'용어정리 > #스프링 삼각형' 카테고리의 다른 글
용어정리-[#스프링삼각형] 1.IoC/DI (0) | 2018.06.02 |
---|