Spring -> IOCxml配置bean注入对象为另一个类的对象(FactoryBean)--附加多实例的配置注入

1.xml配置文件

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
    <!--如果需要创建多个对象,不想设置很多条,可以使用scope="prototype"设置为多实例的-->
    <bean id="factoryBeanClass" class="test10month.test1012.FactoryBeanClass" scope="prototype"></bean>
</beans>

2.类


/**
 * Object getObject():强制返回,配置注入的bean返回为Object;
 */
class FactoryBeanClass implements FactoryBean {
  /**
   * 使得配置注入的bean更改为Object类型,不是FactoryBeanClass类型
   */
  @Override
  public Object getObject() throws Exception {
    return null;
  }

  @Override
  public Class<?> getObjectType() {
    return null;
  }

  @Override
  public boolean isSingleton() {
    return false;
  }
}

3.测试类

package test10month.test1012;

import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.FactoryBean;
import org.springframework.context.support.ClassPathXmlApplicationContext;

/**
 * 功能描述:
 * @version 1.0
 * @className FactoryBeanTest
 * @author: 罗德
 * @create: 2020-10-12 11:52
 */
public class FactoryBeanTest {
  @Test
  public void test() {
    ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("test10month/test1012/FactoryBeanTestSpring.xml");
    /**
     * 改变注入bean的对象为Object
     */
    var factoryBeanClass = context.getBean("factoryBeanClass", Object.class);
        //多实例:他们的地址是不一样的
    var factoryBeanClass2 = context.getBean("factoryBeanClass", Object.class);
    var factoryBeanClass3 = context.getBean("factoryBeanClass", Object.class);
    System.out.println(factoryBeanClass);
  }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值