Spring 프레임 워 크 는 공장 을 통 해 Bean 을 만 드 는 세 가지 방식 으로 이 루어 집 니 다.

5051 단어 Spring공장.Bean
공장 모드
Spring 에서 bean 의 생 성 은 기본적으로 프레임 워 크 가 new 를 반사 하 는 bean 인 스 턴 스 를 사용 합 니 다.때로는 복잡 한 상황 도 있다.
비행기 가 있다 고 가정 하면 속성 은 다음 과 같 습 니 다.지금 은 같은 모델 의 비행 기 를 많이 만들어 야 합 니 다.그러면 유일 하 게 바 꿔 야 할 속성 은 DriverName(기장 이름)입 니 다.이때 공장 모델 로 대상 을 만들어 줄 수 있 습 니 다.대상 을 만들어 주 는 클래스 가 있 습 니 다.이 종 류 는 공장 이 라 고 합 니 다.

public class AirPlane {
	private String DriverName;//     
	private String AirPlaneName;//     
	private String longth;//     
	private Integer num;//    
	//  getter setter  
}
정적 공장:공장 자 체 는 대상 을 만 들 지 않 고 정적 방법 으로 호출 합 니 다.
인 스 턴 스 공장:공장 자체 가 대상 을 만들어 야 합 니 다.먼저 new 공장 인 스 턴 스 가 필요 합 니 다.
1.정적 공장 으로 bean 만 들 기
정적 공장:

package com.gql.factory;
import com.gql.bean.AirPlane;
/**
 *     
 * 
 * @author guoqianliang
 */
public class AirPlaneStaticFactory {
	public static AirPlane getAirPlane(String drivername) {
		System.out.println("       ...");
		AirPlane airplan = new AirPlane();
		airplan.setDriverName(drivername);
		airplan.setAirPlaneName(" 20");
		airplan.setLongth(20);
		airplan.setNum(1);
		return airplan;
	}
}
xml 에 정적 공장 등록:

<!--     : factory-method="getAirPlane"           -->
	<bean id="airPlan1" class="com.gql.factory.AirPlaneStaticFactory" factory-method="getAirPlane">
		<constructor-arg value="  "></constructor-arg>
	</bean>
테스트:

@Test
	public void test07() {
		System.out.println("      ");
		AirPlane bean = (AirPlane) ioc.getBean("airPlan1");
		System.out.println("      :" + bean);
	}

2.인 스 턴 스 공장 으로 bean 만 들 기
인 스 턴 스 공장:

package com.gql.factory;
import com.gql.bean.AirPlane;
/**
 *     
 * @author guoqianliang
 */
public class AirPlaneInstanceFactory {
	public AirPlane getAirPlane(String drivername) {
		System.out.println("       ...");
		AirPlane airplan = new AirPlane();
		airplan.setDriverName(drivername);
		airplan.setAirPlaneName(" 20");
		airplan.setLongth(20);
		airplan.setNum(1);
		return airplan;
	}
}
xml 에 실례 공장 등록 하기:
  • factory-bean="InstanceFactory":어떤 공장 의 인 스 턴 스 를 사용 할 지 지정 합 니 다.
  • factory-method="getAirPlane":어떤 공장 방법 을 사용 합 니까?
  • 
    <bean id="InstanceFactory"
    		class="com.gql.factory.AirPlaneInstanceFactory"></bean>
    	<bean id="airPlan2" class="com.gql.bean.AirPlane"
    		factory-bean="InstanceFactory" factory-method="getAirPlane">
    		<constructor-arg value="    "></constructor-arg>
    	</bean>
    테스트:
    
    	@Test
    	public void test08() {
    		System.out.println("      ");
    		AirPlane bean = (AirPlane) ioc.getBean("airPlan2");
    		System.out.println("      :" + bean);
    	}

    3.Factory Bean 공장 설립 Bean 실현
    ioc 용기 가 시 작 될 때 인 스 턴 스 를 만 들 지 않 습 니 다.가 져 올 때 인 스 턴 스 대상 을 만 듭 니 다.
    Factory Bean 인터페이스 구현:
    
    package com.gql.factory;
    import org.springframework.beans.factory.FactoryBean;
    import com.gql.bean.Book;
    public class MyFactoryBean implements FactoryBean<Book> {
    	/**
    	 *        
    	 */
    	@Override
    	public Book getObject() throws Exception {
    		System.out.println("MyFactoryBean    ...");
    		Book book = new Book();
    		book.setBookName("   ");
    		book.setAuthor("   ");
    		return book;
    	}
    
    	/**
    	 *           
    	 */
    	@Override
    	public Class<?> getObjectType() {
    		// TODO Auto-generated method stub
    		return Book.class;
    	}
    
    	/**
    	 *    ? true:  false:  
    	 */
    	@Override
    	public boolean isSingleton() {
    		// TODO Auto-generated method stub
    		return true;
    	}
    }
    xml 에 등록:
    
    <!--   FactoryBean -->
    <bean id="myFactoryBean" class="com.gql.factory.MyFactoryBean"></bean>
    테스트:
    
    @Test
    	public void test09() {
    		System.out.println("      ");
    		Object bean = ioc.getBean("myFactoryBean");
    		System.out.println("    :" + bean);
    	}

    Spring 프레임 워 크 가 공장 을 통 해 Bean 을 만 드 는 세 가지 방식 으로 이 루어 지 는 것 에 관 한 글 은 여기까지 입 니 다.더 많은 Spring 공장 의 Bean 만 드 는 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 읽 어 보 세 요.앞으로 많은 응원 부 탁 드 리 겠 습 니 다!

    좋은 웹페이지 즐겨찾기