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的作用域
- 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);
}