스프링이란 ?
= 애플리케이션 프레임워크 : 어떤 어플리케이션에도 적용이 가능하다.
= 복잡한 절차를 요구하는 Enterprise Java Bean에 비해 사용이 간단한 경량 컨테이너,
sample1. 일반적 Java Bean 사용
일반적인 java프로그램으로 으로 만들어진 간단한 프로그램
HelloApp.java
1 2 3 4 5 6 | public class HelloApp { public static void main(String[] args) { MessageBean bean = new MessageBean(); bean.sayHello("Spring"); } } |
MessageBean.java
1 2 3 4 5 | public class MessageBean { public void sayHello(String name) { System.out.println("Hello, " + name + "!"); } } |
실행 결과
HelloApp Class <=====> MessageBean Class
객체가 서로 강한 결합으로 묶여 있다.
MessageBean클래스의 인스턴스를 new를 이용해 직접 생성한 후 sayHello()매서드를 호출
= HelloApp클래스가 MessageBean클래스의 구현에 강하게 의존하게 된다(강한 결합)
= 클래스간 결합이 강해져 의존하고 있는 클래스에 변경이 생기면, 코드를 수정해야 하는 범위가 넓어질 가능성이 높아진다.
ex> MessageBean클래스가 아닌 다른 클래스로 변경하게 되면
그 클래스 안에 sayhello()매서드가 구현되고 있다는 보장이 없다.
결론 : 인스턴스를 통해 이용하는 쪽과 이용당하는 쪽의 의존성을 약하게 만들어야 한다.
sample2. 인터페이스 사용
클래스 간 의존성을 약하게 만들기 위해 인터페이스를 사용
HelloApp.java
1 2 3 4 5 6 | public class HelloApp { public static void main(String[] args) { MessageBean bean = new MessageBeanKr(); bean.sayHello("Spring"); } } | cs |
1 2 3 | public interface MessageBean { public void sayHello(String name); } | cs |
1 2 3 4 5 | public class MessageBeanEn implements MessageBean { public void sayHello(String name) { System.out.println("Hello, " + name + "!"); } } | cs |
MessageBeanKr.java
1 2 3 4 5 | public class MessageBeanKr implements MessageBean { public void sayHello(String name) { System.out.println("안녕하세요, " + name + " 씨 ."); } } | cs |
실행 결과
HelloApp Class <=====> MessageBean Interface(MessageBean 클래스를 Interfacefh qkRna)
> MessageMeanEn Class
> MessageMeanKr Class
객체가 서로 약한 결학으로 연결된다.
sample3. 스프링 사용
HelloApp.java
1 2 3 4 5 6 7 8 9 10 11 12 13 | import org.springframework.beans.factory.BeanFactory; import org.springframework.beans.factory.xml.XmlBeanFactory; import org.springframework.core.io.FileSystemResource; public class HelloApp { public static void main(String[] args) { BeanFactory factory = new XmlBeanFactory(new FileSystemResource("beans.xml")); MessageBean bean = factory.getBean("messageBean", MessageBean.class); bean.sayHello("Spring"); } } | cs |
1 2 3 | public interface MessageBean { public void sayHello(String name); } | cs |
1 2 3 4 5 | public class MessageBeanEn implements MessageBean { public void sayHello(String name) { System.out.println("Hello, " + name + "!"); } } | cs |
MessageBeanKr.java
1 2 3 4 5 | public class MessageBeanKr implements MessageBean { public void sayHello(String name) { System.out.println("안녕하세요, " + name + " 씨 ."); } } | cs |
실행 결과
HelloApp Class <===[Spring]==> MessageBean Interface
> MessageMeanEn Class
> MessageMeanKr Class
객체가 서로 약한 결학으로 연결된다.
'Back-End > Spring Framework' 카테고리의 다른 글
[IT교육] Spring의 특징 (0) | 2016.04.18 |
---|---|
[IT교육] IT Software 두 축과 MVC (0) | 2016.04.18 |
[IT교육] Web Application (0) | 2016.04.18 |
[IT교육] "현재"에는 배워야할 Spring (0) | 2016.04.18 |
[IT교육] Spring을 배워야 하는 이유 (0) | 2016.04.18 |