Spring의 Factory Bean 상세 정보

4174 단어 springfactorybean
spring Factory Bean은 복잡한 bean을 만드는 것입니다. 일반적인 bean은 xml로 설정하면 됩니다. 만약에 하나의 bean을 만드는 과정에서 많은 다른 bean과 복잡한 논리가 관련된다면 xml로 설정하는 것은 비교적 어렵습니다. 이때 Factory Bean을 사용하는 것을 고려할 수 있습니다.
예는 다음과 같습니다.
1: Car 클래스를 만드는 것은 일반적으로 Car 클래스를 직접 제공할 수 없습니다. 만약 이렇게 직접 주입하면 되거나 Car 대상을 만들 수 있습니다. 여기는 단지 간편하기 위해서입니다.

package com.myapp.core.factorybean; 
 
public class Car { 
 private String make; 
 private int year; 
  public String getMake() { 
    return make; 
  } 
  public void setMake(String make) { 
    this.make = make; 
  } 
  public int getYear() { 
    return year; 
  } 
  public void setYear(int year) { 
    this.year = year; 
  } 
    
}
2: 하나의 Factory Bean의 실현

package com.myapp.core.factorybean; 
 
import org.springframework.beans.factory.FactoryBean; 
 
public class MyCarFactoryBean implements FactoryBean<Car>{ 
   
  private String make; 
   
  private int year; 
 
  public void setMake(String make) { 
    this.make = make; 
  } 
 
  public void setYear(int year) { 
    this.year = year; 
  } 
 
  @Override 
  public Car getObject() throws Exception { 
    // TODO Auto-generated method stub 
     
    //Here is a complex car object created 
     // wouldn't be a very useful FactoryBean 
    // if we could simply instantiate the object! 
    Car car = new Car(); 
     
    if(year != 0){ 
      car.setYear(this.year); 
    } 
     
    if("make".equals(make)){ 
      car.setMake("we are making bla bla bla"); 
    }else{ 
      car.setMake(this.make); 
    } 
     
    return car; 
  } 
 
  @Override 
  public Class<?> getObjectType() { 
    // TODO Auto-generated method stub 
    return Car.class; 
  } 
 
  @Override 
  public boolean isSingleton() { 
    // TODO Auto-generated method stub 
    return false; 
  } 
 
} 
이상에서 카를 만드는 것은 너무 간단합니다. 너무 간단하면 Factory Bean으로 만들 필요가 없습니다. 복잡하게 쓸 수 있습니다.
3:Person은 하나의 car를 인용한다

package com.myapp.core.factorybean; 
 
public class Person { 
  
  private Car car; 
 
  public Car getCar() { 
    return car; 
  } 
 
  public void setCar(Car car) { 
    this.car = car; 
  } 
   
  public String toString(){ 
     
    return car.getMake()+"::::"+car.getYear(); 
  } 
} 

4: 참조 xml 형식 설정:

<bean id="car" class="com.myapp.core.factorybean.MyCarFactoryBean"> 
  <property name="make" value="makeing car"/> 
  <property name="year" value="123"/> 
</bean> 
 
<bean id="person" class="com.myapp.core.factorybean.Person"> 
 
<property name="car" ref="car"/> 
 
</bean> 
5: 테스트 클래스 테스트 작성:

package com.myapp.core.factorybean; 
 
import org.springframework.context.ApplicationContext; 
import org.springframework.context.support.ClassPathXmlApplicationContext; 
 
public class MainTest { 
 public static void main(String[] args) { 
   
   ApplicationContext context = new ClassPathXmlApplicationContext("resource/others.xml"); 
    
 Person person =  (Person)context.getBean("person"); 
    
   // Car car =  (Car)context.getBean("car"); 
    
  // System.out.println(car); 
  System.out.println(person); 
} 
} 
테스트 결과 makeing car::::123
Factory Bean을 이용하여 car 만들기 성공
단지 사상을 설명하기 위해서다.이 인터페이스가 너무 중요하니까.Spring에서는 여러 종류가 이 인터페이스를 실현했다.
위에서 말한 것은 Spring 중의 Factory Bean에 대한 자세한 설명입니다. 여러분께 도움이 되었으면 합니다. 궁금한 점이 있으면 저에게 메시지를 남겨 주십시오. 편집자는 제때에 답장을 드리겠습니다.여기에서도 저희 사이트에 대한 지지에 감사드립니다!

좋은 웹페이지 즐겨찾기