2013년 9월 26일 목요일

[스프링프레임워크3.X IoC 강좌1]Spring IoC, 스프링 IoC, 스프링제어역행, Spring Framework3.2 Inversion Of ControlSpring IoC, 스프링 IoC, 스프링제어역행, Spring Framework3.2 Inversion Of Control 마틴 파울러는 2004년의글에서 제어의 어떤 측면이 역행되는 것인지에 대한 의문을 제기하고 의존하는 객체를 역행적으로 취득하는 것이라는 결론을 내렸다. 그는 그와 같은 정의에 기초하여 제어 역행이라는 용어에 좀더 참신한 ‘의존성 주입(DI,dependency injection)’이라는 이름을 지어줬다. 모든 어플리케이션은 비지니스 로직을 수행하기 위해 서로 협업하는 둘 또는 그 이상의 클래스들로 이뤄진다. 전통적으로 각 객체는 협업할 객체의 참조를 취득해야 하는 책임이 있다. 이것이 의존성이다. 이는 결합도가 높으며 테스트하기 어려운 코드를 만들어 낸다. IoC를 적용함으로써 객체들은 시스템 내의 각 객체를 조정하는 어떤 외부의 존재에 의해 생성 시점에서 의존성을 부여 받는다. 즉 의존성이 객체로 주입(inject)된다는 말이다. 따라서 IoC는 한 객체가 협업해야 하는 다른 객체의 참조를 취득하는 방법에 대한 제어의 역행이라는 의미를 갖는다. 일반적으로 IoC는 의존성주입(DI), 의존성 룩업(DL) 두개의 하위부류로 나눌 수 있으며 일반적으로 DI를 이야기 할 때는 IoC를 가리키지만 IoC를 이야기 할 때는 DI를 가리키는 것은 아니다. DI도 여러종류(세터주입,생성자주입,메소드주입)가 있지만 DL의 경우도 의존성풀과 컨텍스트화된 의존성룩업(CDC) 두 종류가 있다. [Spring IoC 실습] “오엔제이몰”이라는 회사를 만들어서 내가 잘아는 분야인 차를 팔기로 정했다. 차량의 구매는 현대자동차와 계약을 해서 차량을 구매하기로 하고 돈을 지불하기로 했다. package edu.biz.ioc; public class Money { private int amount; public Money() {} public Money(int amt) { this.amount = amt; } public int getAmount() { return this.amount; } public void setAmount(int amt) { this.amount = amt; } } package edu.biz.ioc; public class Car{ private String name; public Car(String name) { this.name = name; } public String getName() { return this.name; } public void setName(String name) { this.name = name; } } package edu.biz.ioc; public class HyundaiMaker { public HyundaiMaker () { }//: public Car sell(Money money) { System.out.println("I sold a car."); Car car = new Car(“Sonata”); return car; } }///~ package edu.biz.ioc; public class OrderManager { private HyundaiMaker maker; public OrderManager () { this.maker = new HyundaiMaker(); } public void order() { Car car = this.maker.sell(new Money(1000)); } }///~ package edu.biz.ioc; import org.springframework.beans.factory.support.DefaultListableBeanFactory; import org.springframework.beans.factory.xml.*; import org.springframework.core.io.*; public class OrderManagerApp { public static void main(String[] args) { DefaultListableBeanFactory factory = new DefaultListableBeanFactory(); XmlBeanDefinitionReader reader = new XmlBeanDefinitionReader(factory); reader.loadBeanDefinitions(new FileSystemResource("src/main/resources/ioc.xml")); OrderManager manager = (OrderManager) factory.getBean("orderManager"); manager.order(); } } [출처] 오라클자바커뮤니티 - http://www.oraclejavanew.kr/bbs/board.php?bo_table=LecSpring&wr_id=275 >>>[개강안내]오라클자바커뮤니티에서 운영하는 개발자 전문교육 ,개인80%환급[www.onjprogramming.co.kr] [평일저녁9/26]Spring3.X, MyBatis, Hibernate실무과정 [주말9/28] 웹퍼블리싱 마스터 [주말9/28]자바기초에서JSP,Ajax,jQuery,Spring3.2,MyBatis까지 [주말9/28]SQL초보에서실전전문가까지 [주말9/28]C#,ASP.NET마스터 오라클자바커뮤니티에서 설립한 개발자교육6년차 오엔제이프로그래밍 실무교육센터 (오라클SQL,튜닝,힌트,자바프레임워크,안드로이드,아이폰,닷넷 실무개발강의) www.onjprogramming.co.kr JAVA ORACLE iPhone/Android .NET 표준웹/HTML5 채용/취업무료교육 초보자(재학생)코스 [기업특강]JAVA,JSP,AJAX,jQUERY 총 5일 40시간 10-04 스프링3.X게시판&오라클힌트,SQL튜닝,사례연구 총 4일 32시간 10-08 Spring3.X, MyBatis, Hibernate실무과정 총 5일 35시간 10-10 Spring3.X, MyBatis, Hibernate실무과정 총 12일 36시간 09-26 자바초보에서안드로이드까지 총 18일 54시간 10-04 자바기초에서JSP,Ajax,jQuery,Spring3.2,MyBatis까지 총 24일 72시간 10-04 스프링3.X게시판&오라클힌트,SQL튜닝,사례연구 총 11일 33시간 10-08 JAVA&WEB프레임워크실무과정 총 33일 99시간 10-10 JAVA,JSP 초보에서 실무까지 총 18일 56시간 10-17 자바초보에서안드로이드까지 총 8일 56시간 09-28 Spring3.X, MyBatis, Hibernate실무과정 총 5일 35시간 09-28 자바기초에서JSP,Ajax,jQuery,Spring3.2,MyBatis까지 총 10일 70시간 09-28 MiPlatform, XPlatform 실무강좌 총 5일 35시간 10-05 스프링3.X게시판&오라클힌트,SQL튜닝,사례연구 총 4일 32시간 10-05 JAVA&WEB프레임워크실무과정 총 14일 98시간 10-12

[스프링프레임워크3.X IoC 강좌1]Spring IoC, 스프링 IoC, 스프링제어역행, Spring Framework3.2 Inversion Of ControlSpring IoC, 스프링 IoC, 스프링제어역행, Spring Framework3.2 Inversion Of Control
 
마틴 파울러는 2004년의글에서 제어의 어떤 측면이 역행되는 것인지에 대한 의문을 제기하고 의존하는 객체를 역행적으로 취득하는 것이라는 결론을 내렸다.  그는 그와 같은 정의에 기초하여 제어 역행이라는 용어에 좀더 참신한 ‘의존성 주입(DI,dependency injection)’이라는 이름을 지어줬다.
 
모든 어플리케이션은 비지니스 로직을 수행하기 위해 서로 협업하는 둘 또는 그 이상의 클래스들로 이뤄진다. 전통적으로 각 객체는 협업할 객체의 참조를 취득해야 하는 책임이 있다. 이것이 의존성이다. 이는 결합도가 높으며 테스트하기 어려운 코드를 만들어 낸다.
 
IoC를 적용함으로써 객체들은 시스템 내의 각 객체를 조정하는 어떤 외부의  존재에 의해 생성 시점에서 의존성을 부여 받는다. 즉 의존성이 객체로 주입(inject)된다는 말이다. 따라서 IoC는 한 객체가 협업해야 하는 다른 객체의 참조를 취득하는 방법에 대한 제어의 역행이라는 의미를 갖는다.
일반적으로 IoC는 의존성주입(DI), 의존성 룩업(DL) 두개의 하위부류로 나눌 수 있으며 일반적으로 DI를 이야기 할 때는 IoC를 가리키지만 IoC를 이야기 할 때는 DI를 가리키는 것은 아니다. DI도 여러종류(세터주입,생성자주입,메소드주입)가 있지만 DL의 경우도 의존성풀과 컨텍스트화된 의존성룩업(CDC) 두 종류가 있다.

[Spring IoC 실습]
 
“오엔제이몰”이라는 회사를 만들어서 내가 잘아는 분야인 차를 팔기로 정했다.  차량의 구매는 현대자동차와 계약을 해서 차량을 구매하기로 하고 돈을 지불하기로 했다.
 
package edu.biz.ioc;
public class Money {
  private int amount;
  public Money() {}
  public Money(int amt) {
      this.amount = amt;
  }
  public int getAmount() {
    return this.amount;
  }
  public void setAmount(int amt) {
    this.amount = amt;
  }
}
 
 
package edu.biz.ioc;
public class Car{
  private String name;
  public Car(String name) {
     this.name = name;
  }
  public String getName() {
     return this.name;
  }
  public void setName(String name) {
     this.name  = name;
  }
}
 
package edu.biz.ioc;
 public class HyundaiMaker {
 public HyundaiMaker () {
 }//:
 public Car sell(Money money) {
  
    System.out.println("I sold a car.");
    Car car = new Car(“Sonata”);
    return car;
  }
}///~
 
 
package edu.biz.ioc;
public class OrderManager {
private HyundaiMaker maker;
public OrderManager () {
  this.maker = new HyundaiMaker();
}
public void order() {
    Car car = this.maker.sell(new Money(1000));
}

}///~
 
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="orderManager" class="edu.biz.ioc.OrderManager"/>
</beans>
 

package edu.biz.ioc;
import org.springframework.beans.factory.support.DefaultListableBeanFactory;
import org.springframework.beans.factory.xml.*;
import org.springframework.core.io.*;
public class OrderManagerApp {
   public static void main(String[] args) {
      DefaultListableBeanFactory factory = new     
           DefaultListableBeanFactory();
           XmlBeanDefinitionReader reader = new 
                               XmlBeanDefinitionReader(factory);
        reader.loadBeanDefinitions(new
                FileSystemResource("src/main/resources/ioc.xml"));
      OrderManager manager = (OrderManager)   
      factory.getBean("orderManager");
      manager.order();
   }
}
 
 

 
 
 


오라클자바커뮤니티에서 설립한 개발자교육6년차 오엔제이프로그래밍 실무교육센터
(오라클SQL,튜닝,힌트,자바프레임워크,안드로이드,아이폰,닷넷 실무개발강의)  



댓글 없음:

댓글 쓰기