网站首页 美食营养 游戏数码 手工爱好 生活家居 健康养生 运动户外 职场理财 情感交际 母婴教育 生活知识 生活百科 知识问答 更多知识

Spring中使用FactoryBean注册组件

时间:2026-02-13 14:10:23

1、创建一个Spring定义的FactoryBean类:

package com.gwolf.config;

import org.springframework.beans.factory.FactoryBean;

import com.gwolf.vo.Color;

public class ColorFactoryBean implements FactoryBean<Color> {

        @Override

        public Color getObject() throws Exception {

                return null;

        }

        @Override

        public Class<?> getObjectType() {

                return null;

        }

        @Override

        public boolean isSingleton() {

                return false;

        }

}

Spring中使用FactoryBean注册组件

2、FactoryBean类中的getObject()方法会返回一个java对象,这个对象会添加到容器中。

Spring中使用FactoryBean注册组件

3、FactoryBean类中的isSingleton()方法标识返回的是否是一个单实例对象,如果返回true表示在容器中只会保存一份,返回false则每次获取都会创建一个新的bean。

Spring中使用FactoryBean注册组件

4、在组件配置类中把这个工厂bean加入到容器中。

package com.gwolf.config;

import org.springframework.context.annotation.Bean;

import org.springframework.context.annotation.Configuration;

@Configuration

public class ComponentConfig {

        

        @Bean

        public ColorFactoryBean colorFactoryBean() {

                return new ColorFactoryBean();

        }

}

Spring中使用FactoryBean注册组件

5、工厂Bean获取的调用FactoryBean中getObject创建的对象:

Spring中使用FactoryBean注册组件

6、要获取工厂Bean本身,需要给id前面加上一个&标识。

package com.gwolf.test;

import org.junit.Test;

import org.springframework.context.ApplicationContext;

import org.springframework.context.annotation.AnnotationConfigApplicationContext;

import com.gwolf.config.ComponentConfig;

public class ComponentTest {

        ApplicationContext applicationContext = 

                        new AnnotationConfigApplicationContext(ComponentConfig.class);

        

        @Test

        public void testImport() {

                String[] beanNames = applicationContext.getBeanDefinitionNames();

                

                for(String bean : beanNames) {

                        System.out.println(bean);

                }

                

                Object bean = applicationContext.getBean("colorFactoryBean");

                

                System.out.println("bean的类型:" + bean.getClass());

                

                bean = applicationContext.getBean("&colorFactoryBean");

                

                System.out.println("bean的类型:" + bean.getClass());

        }

}

Spring中使用FactoryBean注册组件

© 2026 五度知识库
信息来自网络 所有数据仅供参考
有疑问请联系站长 site.kefu@gmail.com