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()方法返回的实例。

  • 相关阅读:
    [转][LeetCode]Longest Common Prefix ——求字符串的最长公共前缀
    [转]最长回文子串——4种解法
    [转]通过金矿模型介绍动态规划
    一句话说清楚什么是闭包函数
    [转]as3事件流机制彻底理解
    Eclipse 快捷键
    文件打包与解压缩
    第5节 环境变量与文件查找
    vim的多标签
    java思维导图
  • 原文地址:https://www.cnblogs.com/figsprite/p/10776358.html
Copyright © 2011-2022 走看看