(五)工厂Bean与作用域

有两种不同的Bean,可以分为普通Bean与工厂Bean。
1、普通Bean
在配置文件中定义什么类型就返回什么类型。
2、工厂Bean
在配置文件中定义的类型与返回类型不同。

如何决定工厂Bean返回什么类型的Bean?

通过修改工厂Bean的getObject方法的返回类型。

public class beanFactory implements FactoryBean<Book> {
    @Override
    public Book getObject() throws Exception {
        Book book = new Book();
        book.setName("Seldom");
        book.setPrice(45);
        return book;
    }

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

<bean id="beanFactory" class="com.cjy.factory.beanFactory">
    </bean>

测试方法与结果:

public void testFactory()
    {
        ApplicationContext context= new ClassPathXmlApplicationContext("beanFactory.xml");

        Book book= context.getBean("beanFactory", Book.class);

        System.out.println(book);


    }

在这里插入图片描述

Bean的作用域

Bean创建是默认是单例对象。可以通过scope属性设置Bean是单实例还是多实例,
scope的常见属性值:singleton(单例),prototype(多例)。
单例:

public void test()
    {
        ApplicationContext context =new ClassPathXmlApplicationContext("bean.xml");
        Book book1= context.getBean("book1",Book.class);
        Book book2= context.getBean("book1",Book.class);

        System.out.println(book1);
        System.out.println(book2);

    }
<bean id="book1" class="com.cjy.List.Book" >
        <property name="name" value="Java"> </property>
        <property name="price" value="29"> </property>
    </bean>

在这里插入图片描述
单例对象的地址相同。

多例

<bean id="book1" class="com.cjy.List.Book" scope="prototype">
        <property name="name" value="Java"> </property>
        <property name="price" value="29"> </property>
    </bean>

在这里插入图片描述
可见多例的对象地址是不同的

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值