[DI 사용의 장점, Pencil 인터페이스 구현]
: Spring에서 DI를 사용할 때 그리고 인터페이스와 함께 했을 때의 장점은 무엇인가?
Pencil.java
1 2 3 4 5 | public interface Pencil { public void use(); } | cs |
*
Pencil 인터페이스에 use();라는 메서드를 만들어주었다.
이제 다른 친구들에게 오버라이딩을 시켜 줄 예정이다.
(public은 생략이 가능하다.)
Pencil4B.java
1 2 3 4 5 6 7 | public class Pencil4B implements Pencil { @Override // 상속을 받아서 같은 내용을 받았는데 내용 변경이 필요할 때 public void use() { System.out.println("저는 4B펜슬입니다:)"); } } | cs |
Pencil6B.java
1 2 3 4 5 6 7 | public class Pencil6B implements Pencil { @Override public void use() { System.out.println("저는 6B펜슬입니다:)"); } } |
Pencil6BWithEraser.java
1 2 3 4 5 6 7 | public class Pencil6BWithEraser implements Pencil{ @Override public void use() { System.out.println("저는 6B펜슬이자, 지우개기능까지 있습니다:)"); } } | cs |
*
세 클래스는 전부 Pencil 인터페이스를 받아 구현하며
숱하게 해와서 잘 알겠지만 반복 학습을 하자면
오버라이딩은 상속을 받아 같은 내용을 받았을 때 내용 변경이 필요하면 쓰는 친구이다.
ctx_example.xml
1 2 3 4 5 6 7 8 9 | <?xml version="1.0" encoding="UTF-8"?> <bean id="pencil" class="com.yul.ex02_example.Pencil4B"/> </beans> | cs |
*
너무나 단순하다.
id는 pencil로 잡아넣고 앞으로 xml파일에서 class주소만 바꾸면
MainClass를 바꾸지 않아도 기능을 구현할 수 있다.
MainClass.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | public class MainClass { public static void main(String[] args) { // String configLocation = "classpath:ctx_example.xml"; // AbstractApplicationContext ctx = new GenericXmlApplicationContext(configLocation); AbstractApplicationContext ctx = new GenericXmlApplicationContext("classpath:ctx_example.xml"); Pencil pencil = ctx.getBean("pencil", Pencil.class); pencil.use(); ctx.close(); } | cs |
*
주석 두 줄은 아래 한 줄로 간단하게 쓸 수 있다.
여기서 그저 Pencil 인터페이스만 불러오고 getBean으로 불러오기만해서
use()메서드를 써주면
Pencil 인터페이스에 곧 Pencil4B객체를 만든 것과 같은 효과를 낼 수 있다.
'프로그래밍 > Spring' 카테고리의 다른 글
Spring / xml과 Java를 같이 사용하는 방법 (0) | 2018.04.07 |
---|---|
Spring / Java를 통한 DI 설정방법 (0) | 2018.04.07 |
Spring / 직접 or 참조 DI설정 (0) | 2018.04.07 |
Spring / constructor-arg를 통한 의존주입 (0) | 2018.04.07 |
Spring / xml 매핑하기 (0) | 2018.04.07 |