• 006 IOC---FactoryBean


    一 .概述

      在之前我们通过工厂创建出了Bean对象,很显然,使用起来比较麻烦,这种做法只是兼容之前的习惯而已.

      另外在spring之中,提供了一个特别的Bean,这种Bean存在的含义就是创建对象,spring使用FactoryBean来描述.


    二 .FactoryBean  

    public interface FactoryBean<T> {
    
        T getObject() throws Exception;
    
        Class<?> getObjectType();
      
        boolean isSingleton();
    
    }

    该接口定义了三个方法:

    [1]获取对象

    [2]获取对象的类型

    [3]是否单例.

    当我们配置了FactoryBean的时候,实际上是配置了一个该Bean生产的一个对象.


    三 .演示 

    public class DateFactoryBean implements FactoryBean<Date> {
        //获取对象
        @Override
        public Date getObject() throws Exception {
            return new Date();
        }
        //获取对象的类型
        @Override
        public Class<?> getObjectType() {
            return Date.class;
        }
        //获取Bean的作用域
        @Override
        public boolean isSingleton() {
            return true;
        }
    }

    配置文件:

    <bean id="date" class="com.trek.factory.DateFactoryBean"></bean>

    测试代码:  

        public static void main(String[] args) {
            ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("spring.xml");
            Date date = (Date) context.getBean("date");
            System.out.println(date);
        }

    我们发现,我们配置的Bean实际上是为了生产另外一个Bean而存在的.


    四 .FactoryBean的作用

      在spring之中,大量使用了FactoryBean.同时第三方的框架箱与spring集成的时候也使用了这个接口.

      通过该接口,spring会知道创建的是什么Bean,什么类型,什么作用域.

  • 相关阅读:
    Elasticsearch安装中文分词器IK
    Docker安装ElasticSearch
    Docker安装
    Docker安装EOS
    Docker更改容器端口映射
    BoltDB 一个简单的纯 Go key/value 存储
    go语言 robfig/cron包 实现定时 调用
    GitHub 添加 SSH keys
    Android 端外推送到底有多烦?
    Nats的消息通信模型
  • 原文地址:https://www.cnblogs.com/trekxu/p/9090732.html
Copyright © 2020-2023  润新知