Spring容器中实例化Bean的三种方法
程序员文章站
2022-03-03 11:51:45
...
整个项目文件夹如图:
1. 创建三个类,分别是BeanClass类,BeanInstanceFactory类,BeanStaticFactory类分别用于构造方法,实例工厂实例化和静态工厂实例化Bean。
<1>构造方法实例化:在项目的src文件夹下创建包instance,并在内创建BeanClass类:
package instance;
public class BeanClass {
public String message;
public BeanClass()
{
message="构造方法实例化bean";
}
public BeanClass(String s)
{
message=s;
}
}
<2>实例工厂实例化: 在项目的src文件夹下的包instance内创建BeanInstanceFactory类
package instance;
public class BeanInstanceFactory {
public BeanClass createBeanClassInstance() {
return new BeanClass("调用实例工厂方法实例化Bean");
}
}
<3>静态工厂实例化: 在项目的src文件夹下的包instance内创建BeanStaticFactory类
package instance;
public class BeanStaticFactory {
private static BeanClass beanInstance=new BeanClass("调用静态工厂实例化Bean");
public static BeanClass createInstance() {
return beanInstance;
}
}
2.在项目的src文件夹下创建配置文件applicationContext.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">
<!--id声明获取Bean的来源,class声明工作运行类-->
<!-- 构造方法实例化Bean -->
<bean id="constructorInstance" class="instance.BeanClass"></bean>
<!-- 静态工厂方法实例化Bean.createInstance为静态工厂类BeanStaticFactory中的静态方法 -->
<bean id="staticFactoryInstance" class="instance.BeanStaticFactory" factory-method="createInstance"></bean>
<!-- 配置工厂 -->
<bean id="myFactory" class="instance.BeanInstanceFactory"></bean>
<!-- 使用factory-bean的属性指定配置工厂,使用factory-method属性指定使用工厂中哪个方法实例化Bean -->
<bean id="instanceFactoryInstance" factory-bean="myFactory" factory-method="createBeanClassInstance"></bean>
</beans>
3.在项目src文件夹下创建包test,并在文件夹下创建测试类TestInstance
package test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import instance.BeanClass;
//测试类
public class TestInstance {
public static void main(String[] args) {
// TODO Auto-generated method stub
//初始化Spring容器ApplicationContext,加载配置文件
ApplicationContext appCon=new ClassPathXmlApplicationContext("applicationContext.xml");
//测试构造方法实例化Bean
BeanClass b1=(BeanClass)appCon.getBean("constructorInstance");
System.out.println(b1+b1.message);
//测试静态工厂方法实例化Bean
BeanClass b2=(BeanClass)appCon.getBean("staticFactoryInstance");
System.out.println(b2+b2.message);
//测试实例工厂方法实例化Bean
BeanClass b3=(BeanClass)appCon.getBean("instanceFactoryInstance");
System.out.println(b3+b3.message);
}
}
运行结果如下:
推荐阅读
-
jQuery中each遍历的三种方法实例分析
-
Python面向对象程序设计中类的定义、实例化、封装及私有变量/方法详解
-
02Spring基于xml的IOC配置--实例化Bean的三种方式
-
Spring jdbc中数据库操作对象化模型的实例详解
-
普通对象使用spring容器中的对象的实现方法
-
FastJson序列化自定义返回字段,普通类从spring容器中获取bean
-
将Linux中systemd的单元配置实例化的方法
-
spring中FactoryBean中的getObject()方法实例解析
-
荐 浅谈Java中类和对象的初始化、实例化以及方法重载的底层机制
-
spring初始化bean时执行某些方法完成特定的初始化操作