欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Bean的3种实例化方式

程序员文章站 2022-05-23 18:40:54
...

Bean有三种实例化

构造器实例化、静态工厂方式实例化和实例工厂方式实例化。

目录

Bean有三种实例化

一、构造器实例化

概念:构造器实例化是指Spring容器通过Bean对应类中默认的无参构造方法来实例化Bean。

案例演示:

二、静态工厂方式实例化

概念:在该方法中,需要我们自己创建一个静态工厂来创建Bean的实例

演示案例:

三、实例工厂方式实例化

概念:采用直接创建Bean实例的方式。具体看演示讲解

演示案例:


一、构造器实例化

概念:构造器实例化是指Spring容器通过Bean对应类中默认的无参构造方法来实例化Bean。

案例演示:

(1)在chapter02项目的java资源目录下创建一个包,名为:com.itheima.instance.constructor,在包下创建类Bean1

package com.itheima.instance.constructor;

public class Bean1 {

}

(2)配置Bean1类,在包下创建beans1.jsp文件

<?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-4.3.xsd">
    <bean id="bean1" class="com.itheima.instance.constructor.Bean1"></bean>
</beans>

(3)在包下创建一个测试类InstanceTest1

package com.itheima.instance.constructor;

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

public class InstanceTest1 {

	public static void main(String[] args) {
//		定义配置文件的路径
		String xmlPath = "com/itheima/instance/constructor/beans1.xml";
//		ApplicationContext在加载配置文件时,对Bean进行实例化
		ApplicationContext applicationContext = new 
				ClassPathXmlApplicationContext(xmlPath);
		Bean1 bean = (Bean1) applicationContext.getBean("bean1");
		System.out.println(bean);

	}

}

运行结果:

Bean的3种实例化方式

二、静态工厂方式实例化

概念:在该方法中,需要我们自己创建一个静态工厂来创建Bean的实例

演示案例:

(1)在src下创建一个新的包,取名为com.itheima.instance.static_factory;在该类下创建一个类Bean2

package com.itheima.instance.static_factory;

public class Bean2 {

}

(2)在包下创建静态工厂MyBean2Factory

package com.itheima.instance.static_factory;

public class MyBean2Factory {
	
	public static Bean2 createBean() {
		return new Bean2();
	}
}

(3)在包下创建beans2.xml文件配置Bean2

<?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-4.3.xsd">
    <bean id="bean2" 
    	class="com.itheima.instance.static_factory.MyBean2Factory"
    	factory-method="createBean">
    </bean>
</beans>

将类com.itheima.instance.static_factory.MyBean2Factory的静态工厂方法createBean的id配置为bean2,当向Spring容期的方法getBean()传入参数bean2时,调用com.itheima.instance.static_factory.MyBean2Factory类的静态方法createBean实例化Bean2返回。

(4)创建测试类InstanceTest2

package com.itheima.instance.static_factory;

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

public class InsatanceTest2 {

	public static void main(String[] args) {
		String xmlPath = "com/itheima/instance/static_factory/beans2.xml";
		ApplicationContext applicationContext = new 
				ClassPathXmlApplicationContext(xmlPath);
		System.out.println(applicationContext.getBean("bean2"));

	}

}

(5)运行结果:

Bean的3种实例化方式

三、实例工厂方式实例化

概念:采用直接创建Bean实例的方式。具体看演示讲解

演示案例:

(1)在src下创建一个的名为com.itheima.instance.factory的包,在该包下创建类Bean3

package com.itheima.instance.factory;

public class Bean3 {

}

(2) 在包下创建类MyBean3Factory

package com.itheima.instance.factory;

public class MyBean3Factory {
	
	public MyBean3Factory() {
		System.out.println("bean3工程实例化中");
	}

//	创建bean3实例的方法
	public Bean3 createBean() {
		return new Bean3();
	}
}

 (4)创建beans3.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-4.3.xsd">
    <bean id="myBean3Factory" class="com.itheima.instance.factory.MyBean3Factory"></bean>
    <bean id="bean3" factory-bean="myBean3Factory" factory-method="createBean"></bean>
</beans>

 在实例方式实例化这种方式中,配置文件里面需要配置实例化工厂的id,配置实例化Bean3的Bean的id和其调用的方法的id,也就是factory-bean属性和factory-method属性。

(5)在包下创建测试类InstanceTest03

package com.itheima.instance.factory;

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

public class InstanceTest3 {

	public static void main(String[] args) {
		String xmlPath = "com/itheima/instance/factory/beans3.xml";
		ApplicationContext applicationContext = new 
				ClassPathXmlApplicationContext(xmlPath);
		System.out.println(applicationContext.getBean("bean3"));

	}

}

(6)运行结果

Bean的3种实例化方式

 三种方式演示完毕,有疑问或者有发现我写错的地方欢迎提出,互相学习

相关标签: 随笔