程序员社区

【Spring学习及总结08】继承bean,模板bean,bean的作用域

文章目录

      • 1.继承bean
      • 2.模板 bean
      • 3.bean的作用域

1.继承bean

通过继承bean配置信息,实现配置信息的重用
person01的配置文件是person02的父配置文件,也就是说,person01中配置过的属性,person02不需要重新配置,如果想要修改哪个属性的值,就在person02中重写给该属性赋值

<bean id="person01" class="com.hh.pojo.Person">
    <property name="lastName" value="张三"/>
    <property name="age" value="23"/>
    <property name="gender" value=""/>
    <property name="email" value="123@qq.com"/>
</bean>
<bean id="person02" class="com.hh.pojo.Person" parent="person01">
	<!--修改lastName的属性值-->
    <property name="lastName" value="李四"/>
</bean>

测试类:

public class MyTest3 {
    //根据spring的配置文件得到ioc容器对象
    ApplicationContext context =
            new ClassPathXmlApplicationContext("spring3.xml");
    @Test
    public void test() {
        Person person = (Person) context.getBean("person02");
        System.out.println(person);
    }
}

在这里插入图片描述

2.模板 bean

通过abstract属性创建一个模板bean:abstract="true
这个bean的配置时抽象的,不能获取他的实例,只能被别人来继承

<!--这个bean的配置时抽象的,不能获取他的实例,只能被别人来继承-->
<bean id="person01" class="com.hh.pojo.Person" abstract="true">
    <property name="lastName" value="张三"/>
    <property name="age" value="23"/>
    <property name="gender" value=""/>
    <property name="email" value="123@qq.com"/>
</bean>
<bean id="person02" class="com.hh.pojo.Person" parent="person01">
    <property name="lastName" value="李四"/>
</bean>

3.bean的作用域

  1. singleton:单实例的
    (1)在容器启动之前就已经创建好对象,保存在容器中了
    (2)任何获取都是获取之前创建好的对象

首先写一个实体类Book:

@AllArgsConstructor
@Data
public class Book {
    private String bookName;
    private String authorName;
    public Book() {
        System.out.println("book创建了...");
    }
}

配置bean的作用域:scope="singleton"

<bean id="book" class="com.hh.pojo.Book" scope="singleton">
</bean>

写一个测试类:

//根据spring的配置文件得到ioc容器对象
ApplicationContext context =
       new ClassPathXmlApplicationContext("spring3.xml");
@Test
public void test(){
   System.out.println("容器启动完成....");
   Book book = context.getBean("book", Book.class);
   Book book1 = context.getBean("book", Book.class);
   System.out.println(book==book1);
}

在这里插入图片描述
2. prototype:多实例的
(1)容器启动默认不会创建实例bean
(2)获取实例时创建bean
(3)每次获取时都会创建一个新的bean

将bean的作用域改为scope="prototype"

<bean id="book" class="com.hh.pojo.Book" scope="prototype">
</bean>

写一个测试类:

//根据spring的配置文件得到ioc容器对象
ApplicationContext context =
        new ClassPathXmlApplicationContext("spring3.xml");
@Test
public void test(){
    System.out.println("容器启动完成....");
    Book book = context.getBean("book", Book.class);
    Book book1 = context.getBean("book", Book.class);
    System.out.println(book==book1);
}

在这里插入图片描述

赞(0) 打赏
未经允许不得转载:IDEA激活码 » 【Spring学习及总结08】继承bean,模板bean,bean的作用域

相关推荐

  • 暂无文章

一个分享Java & Python知识的社区