spring xml实现bean的作用域
- 新建maven工程导入依赖
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>6.0.6</version>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
<version>5.3.1</version>
</dependency>
</dependencies>
- 定义java类
public class JavaBean implements JavaBeanInteface{
public JavaBean(){
}
}
- .xml定义bean信息
<?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">
<!-- 1.使用无参构造函数实例化组件
一个bean 信息,一个组件对象
id 通过id获取对象
class 类的全限界定符
-->
<bean id="javaBean" class="com.binbin.ioc.JavaBean" ></bean>
</beans>
- 获取bean
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("spring-01.xml");
JavaBean javaBean = (JavaBean) applicationContext.getBean("javaBean"); // 1.通过id 获取bean对象
JavaBean javaBean1 = (JavaBean) applicationContext.getBean("javaBean"); // 1.通过id 获取bean对象
System.out.println(javaBean == javaBean1);
输出结果:true
- 4.2 修改bean标签,设置为单例模式,scope=“singleton”
<bean id="javaBean" class="com.binbin.ioc.JavaBean" scope="singleton"></bean>
输出结果:true
- 4.3 修改bean标签,设置为多例模式,scope=“prototype”
<bean id="javaBean" class="com.binbin.ioc.JavaBean" scope="prototype"></bean>
输出结果:false
- 总结
单例模式,在容器中只有一个实例bean。多例模式,每次getBean都会创建一个新的bean。