zoukankan      html  css  js  c++  java
  • 通过FactoryBean配置Bean

        这是配置Bean的第三种方式,FactoryBean是Spring为我们提供的,我们先来看看源码:

        第一个方法:public abstract T getObject() throws Exception;

                返回Bean本身,

        第二个方法:public abstract Class<?> getObjectType();

                返回Bean实例

        第三个方法:public boolean isSingleton()

                {

                     return true;

                }

                返回Bean是否单例

        也许你会问,我们可以通过全类名配置,也可以通过工厂方法配置为什么还要用FactoryBean来配置Bean呢?

        因为我们有时候在配置Bean的时候需要用到IOC容器里面的其他Bean,这是通过FactoryBean配置是最合适的。

        创建一个CarFactoryBean,要求实现FactoryBean的接口。

    package com.figsprite.bean.FactoryBean;
    
    import org.springframework.beans.factory.FactoryBean;
    
    public class CarFactoryBean implements FactoryBean {
    
        private String brand;
    
        public void setBrand(String brand) {
            this.brand = brand;
        }
    
        @Override
        public Object getObject() throws Exception {
            return new Car(brand,100);
        }
    
        @Override
        public Class<?> getObjectType() {
            return Car.class;
        }
    
        @Override
        public boolean isSingleton() {
            return true;
        }
    }
    

      

    创建一个新的配置文件,新建一个<bean>标签,class属性指向刚刚写好的FactoryBean

    <bean id="car" class="com.figsprite.bean.FactoryBean.CarFactoryBean">
    <property name="brand" value="
    马自达"/>
    </bean>

     

    这些举动显得多此一举,我们仅仅只是演示一下,大家平常配置bean时,直接用第一种方法就好了

    我们在<property>中配置FactoryBean的属性,但返回的实例却是FactoryBean的getObject()方法返回的实例。

  • 相关阅读:
    Emacs使用gnus收发邮件时nnfolder相关介绍
    emacs 播放mp3
    你真的会写二分查找吗?
    数独的经典case
    MySQL处理千万级数据查询、分页
    Mysql Replication 机制
    redis位图(bitmap)常用命令的解析
    由浅入深了解线程池之源码初探
    BlockingQueue家族成员一览
    由浅入深了解线程池之初识线程池
  • 原文地址:https://www.cnblogs.com/figsprite/p/10776358.html
Copyright © 2011-2022 走看看