16일차 3 - Spring 시작하기
Spring setting
Spring Download 받은 압축파일을 푼다.
- spring-framework-2.5.6.SEC01
- spring-framework-3.0.1.RELEASE-dependencies
- spring-framework-3.1.1.RELEASE
plug-in 하나 더 받자
Help –> Install New Software…
Core / Spring IDE 선택(가장 필수적인거야.. )
나중에 시간있으면 STS같은거 설치해 (다운오래걸리거든..)
.
.
.
.
.
이제 새로 프로젝트(springdev)를 만들자.
New-> Project-> Java Project
먼저 자바로 해보고 나중에 웹으로 해볼거야.
exam01 패키지에 HelloApp 라는 클래스 하나 만들자.
이렇게 HelloApp만들고 MessageBean이라는 클래스를 하나 정의해보자.
package exam01; public class MessageBean { public void sayHello(String name){ System.out.println("Hello, "+name); } }
이 sayHello를 쓰기 위해서 HelloApp에선 다음의 단계를 거쳐야지.
package exam01; public class HelloApp { public static void main(String[] args) { MessageBean bean = new MessageBean(); bean.sayHello("Taiji"); } }
아주 당연하지.
하지만 이 상태에서는 HelloApp클래스는 MessageBean클래스에 완전히 의존적이지. new가 있으면 의존적일 수 밖에 없지.
만약 MessageBean이 한글버전으로 MessageBeanKo하나 더 만들어졌다면
package exam01; public class MessageBeanKo { public void sayHi(String name) { System.out.println("안녕하세요, "+name+"씨"); } }
이를 사용하게 위해선 HelloApp를 변경할 수 밖에 없지.
.
.
.
.
abstract method가 있는 abstract class를 만들거나, Interface를 만들어야겠지.
Interface를 만들어보자. (저장하는거 같은게 없으니까)
클래스명을
MessageBean -> MessageBeanImpl
MessageBeanKo -> MessageBeanImplKo 바꾸고..
얘네들을 upcasting하기 위한 abstract class나 Interface를 만들어야 하는데, 저장한다던가 하는게 없으니까 Interface를 만들자.
그다음 MessageBeanImpl, MessageBeanImplKo 에 implement시켜야지.. 그러면 당연히MessageBeanImplKo 의 sayHi는 sayHello로 바꿔줘야겠지.
package exam01; public interface MessageBean { public void sayHello(String name); }
package exam01; public class MessageBeanImpl implements MessageBean{ public void sayHello(String name){ System.out.println("Hello, "+name); } }
package exam01; public class MessageBeanImplKo implements MessageBean { public void sayHello(String name) { System.out.println("안녕하세요, "+name+"씨"); } }
package exam01; public class HelloApp { public static void main(String[] args) { MessageBean bean = new MessageBeanImpl(); //upcasting // MessageBean bean = new MessageBeanImplKo(); //upcasting bean.sayHello("Taiji"); } }
실행은 되지만 여전히 의존적이지.
.
.
.
.
spring을 사용하면 이런것을 아주 쉽게 해결할 수 있지.
15:00