IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> Spring框架中该如何对Bean进行实例化? -> 正文阅读

[Java知识库]Spring框架中该如何对Bean进行实例化?

????????在面向对象编程中,如果要使用某个类的对象,通常需要手动使用new编码的方式来实例化该对象。使用Spring框架后,我们可以把对象实例化交给Spring容器来处理。

目录

1、构造方法实例化

?2、静态工厂实例化?

3、实例工厂实例化


Spring框架实例化Bean的方式有三种:

  1. 构造方法实例化
  2. 静态工厂实例化
  3. 实例工厂实例化

其中最为常用的是构造方法实例化。

1、构造方法实例化

??????? 构造方法实例化是指Spring容器通过调用Bean类中对应的无参数构造方法来实例化该Bean的一种方式。

??????? 如下通过一个应用案例演示构造方法实例化的过程,步骤如下:

第一步:创建一个动态Web项目,导入Spring框架的核心容器组件和对应依赖的jar包

第二步:在src目录下创建包 cn.sjxy.chapter04.instance,并在该包下创建名为MyBean的类

MyBean.java

package cn.sjxy.chapter04.instance;
/*
*@author qiqi
*@version 创建时间:2021年10月17日下午3:19:28
*类说明
*/
public class MyBean {
	private String msg;

	public MyBean(){
		this.msg="调用[构造方法实例化Bean的方法] 创建MyBean";
		//System.out.println("无参数的构造方法被调用");
	}
	public MyBean(String msg){
		this.msg=msg;
		//System.out.println("有参数的构造方法被调用");
	}
	@Override
	public String toString() {
		// TODO Auto-generated method stub
		return "MyBean [msg="+msg+"]";		
		
	}	
	
}

第三步:在src目录下创建applicationContext.xml Spring容器核心配置文件

<?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
        https://www.springframework.org/schema/beans/spring-beans.xsd">
        
<!-- 采用构造方法实例化Bean -->

    <bean id="myBean" class="cn.sjxy.chapter04.instance.MyBean"></bean>

</beans>

第四步:在src目录下创建一个名为TestInstanceBean的测试类,并引入JUnit4.jar,在类中创建testConstructorInstance单元测试方法。
?

package cn.sjxy.chapter04.test;

import org.springframework.context.ApplicationContext;
import org.junit.Test;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import cn.sjxy.chapter04.instance.MyBean;

/*
*@author qiqi
*@version 创建时间:2021年10月17日下午3:28:35
*类说明
*/
public class TestInstanceBean {
	@Test
	public void testConstructorInstance(){
		ApplicationContext contex = new ClassPathXmlApplicationContext("applicationContext.xml");
		MyBean myBean = (MyBean) contex.getBean("myBean");
		System.out.println(myBean);
	}
}

第五步:运行上述测试类,控制台输出结果如下。

Spring容器已经实例化了MyBean类的对象,且采用的是基于构造方法实例化Bean的方式

?2、静态工厂实例化?

????????静态方法实例化要求开发者在工厂类中创建一个static的静态方法来创建Bean的实例。

????????如下通过一个应用案例演示构造方法实例化的过程,步骤如下:

第一步:在src目录下创建包 cn.sjxy.chapter04.instance,并在该包下创建名为MyBeanStatic的类,并创建一个静态方法来实话MyBean对象。

package cn.sjxy.chapter04.instance;
/*
*@author qiqi
*@version 创建时间:2021年10月17日下午3:57:39
*类说明
*/
public class MyBeanStaticFactory {
	public static MyBean createMyBean(){
		return new MyBean("调用[静态工厂实例化Bean的方式]创建MyBean");
	}
}

?第二步:在Spring框架的核心配置文件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
        https://www.springframework.org/schema/beans/spring-beans.xsd">
        
<!-- 采用构造方法实例化Bean -->
    <bean id="myBean" class="cn.sjxy.chapter04.instance.MyBean"></bean>
    
<!-- 采用静态方法实例化Bean 
	class属性:指定静态工厂类的完整路径
	factory-method属性:指定工厂类中的静态方法的名称
   -->
   	<bean id="mystaticFacotry" class="cn.sjxy.chapter04.instance.MyBeanStaticFactory" 
   		factory-method="createMyBean"></bean>

</beans>

第三步:创建testStaticFactory单元测试方法。?

package cn.sjxy.chapter04.test;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import cn.sjxy.chapter04.instance.MyBean;

/*
*@author qiqi
*@version 创建时间:2021年10月17日下午4:04:10
*类说明
*/
public class testStaticFacotry {

	public static void main(String[] args) {
		
		ApplicationContext contex = new ClassPathXmlApplicationContext("applicationContext.xml");

		MyBean myBean = (MyBean) contex.getBean("mystaticFacotry");

		System.out.println(myBean);
	}

}

第四步:运行上述测试类,控制台输出结果如下。

Spring容器已经实例化了MyBean类的对象,且采用的是基于静态工厂实例化Bean的方式 ?

3、实例工厂实例化

? 使用实例工厂实例化要求开发者在工厂类中定义一个实例方法来创建Bean的实例。

第一步:创建实例工厂MyBeanInstanceFactory,并定义一个实例方法createMyBean

package cn.sjxy.chapter04.instance;
/*
*@author qiqi
*@version 创建时间:2021年10月17日下午4:14:30
*类说明
*/
public class MyBeanInstanceFactory {
	public MyBean createMyBean(){
		return new MyBean("调用[实例化工厂实例化Bean的方式]创建MyBean");
	}
}

第二步:在Spring框架的核心配置文件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
        https://www.springframework.org/schema/beans/spring-beans.xsd">
        
<!-- 采用构造方法实例化Bean -->
    <bean id="myBean" class="cn.sjxy.chapter04.instance.MyBean"></bean>
    
<!-- 采用静态方法实例化Bean 
	class属性:指定静态工厂类的完整路径
	factory-method属性:指定工厂类中的静态方法的名称
-->
   	<bean id="mystaticFacotry" class="cn.sjxy.chapter04.instance.MyBeanStaticFactory" 
   		factory-method="createMyBean"></bean>
   		
<!-- 采用工厂实例化方法实例化Bean -->   	
   	<bean id="myBeanInstanceFactory" class="cn.sjxy.chapter04.instance.MyBeanInstanceFactory"></bean>
	<bean id="myBeanInstance" factory-bean="myBeanInstanceFactory" 
	factory-method="createMyBean"></bean>
	
</beans>

第三步:创建testStaticFactory单元测试方法。?

package cn.sjxy.chapter04.test;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import cn.sjxy.chapter04.instance.MyBean;

/*
*@author qiqi
*@version 创建时间:2021年10月17日下午4:22:08
*类说明
*/
public class testInstanceFactory {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		ApplicationContext contex = new ClassPathXmlApplicationContext("applicationContext.xml");
		MyBean myBean = (MyBean) contex.getBean("myBeanInstance");
		System.out.println(myBean);
	}

}

?第四步:运行上述测试类,控制台输出结果如下。

?Spring容器已经实例化了MyBean类的对象,且采用的是基于实例工厂实例化Bean的方式 ?

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2021-10-18 17:15:46  更:2021-10-18 17:16:59 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 22:33:59-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码