【Spring註解】FactoryBean註冊

5.FactoryBean

自定義Cat的工廠對象 CatFactoryBean

/**
 * @author GaoYuzhe
 * @date 2018/3/13.
 */
public class CatFactoryBean implements FactoryBean<Cat> {
    /**
     * 返回一個Car對象,當前對象會加入到容器中
     * @return
     * @throws Exception
     */
    public Cat getObject() throws Exception {
        System.out.println("CatFactoryBean...getObject...");
        return new Cat();
    }

    /**
     * 返回類型
     * @return
     */
    public Class<?> getObjectType() {
        return Cat.class;
    }

    /**
     * 是否爲單例
     * @return
     */
    public boolean isSingleton() {
        return false;
    }
}

配置類

**
 * @author GaoYuzhe
 * @date 2018/3/13.
 */
@Configuration
public class FactoryConfig {
    @Bean
   public CatFactoryBean catFactoryBean(){
       return new CatFactoryBean();
   }
}

測試類

**
 * @author GaoYuzhe
 * @date 2018/3/13.
 */
public class FactoryConfigTest {

    @Test
    public void catFactoryBean() {
        AnnotationConfigApplicationContext annotationConfigApplicationContext = new AnnotationConfigApplicationContext(FactoryConfig.class);
        //獲取工廠創建的對象
        Object catFactoryBean = annotationConfigApplicationContext.getBean("catFactoryBean");
        System.out.println("工廠創建的對象:"+catFactoryBean.getClass());
        //beanName前加'&',獲取工廠本身
        Object catFactory = annotationConfigApplicationContext.getBean("&catFactoryBean");
        System.out.println("工廠對象本身:"+catFactory.getClass());
    }
}

運行結果

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章