spring 三种对象创建方式

一、XML配置文件

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xmlns="http://www.springframework.org/schema/beans" 
xsi:schemaLocation="http://www.springframework.org/schema/beans 
http://www.springframework.org/schema/beans/spring-beans-4.2.xsd ">
	
	
	<!--bean节点: scope属性(默认是singleton):
			1、singleton:单例对象,被标识为单例的对象在spring容器中只会存在一个实例
			2、prototype:多例原型:被标识为多例的对象,每次再获得才会创建,每次创建都是新的对象
			3、request:web环境下,对象与request生命周期一致
			4、session:web环境下,对象与session生命周期一致-->
	<!-- init-method="init" 对象创建后立即执行 
		 destory="destory"  对象销毁后执行,关于销毁是调用ClassPathXMLApplicationContext中的.close方法-->
		 
	<!-- 创建方式一 空参构建创建 -->
<bean name="user" class="com.lzp.bean.User" ></bean>
	
	<!-- 创建方式二  静态工厂创建-->
	<!-- 通过调用UserFactory,
			执行createFactory方法创建User对象放入容器 -->
	<bean name="user2" class="com.lzp.create.UserFactory" factory-method="createFactory"></bean>
		
		<!-- 创建方式三  实例工厂创建-->
		<!--通过调用UserFactory,
			执行createUser方法创建User对象放入容器-->
	<bean name="user3" factory-bean="userFactory" factory-method="createUser"></bean>
	<bean name="userFactory" class="com.lzp.create.UserFactory"></bean>
		
		<!-- 分模块化配置:就是导入其他的spring配置文件,各个模板之间分开
			各模版之间的配置不用都写在一个XML文件中便于区分与管理 -->
		<import resource="com/lzp/create/applicationContext.xml"/>
	
</beans>

 
 

二、测试类

package com.lzp.create;

import org.junit.jupiter.api.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.lzp.bean.User;

public class Demo {
		//创建方式一,空参构造创建
		@Test
		public void test() {
		//1、创建容器对象
		ApplicationContext app = new ClassPathXmlApplicationContext("com/lzp/create/applicationContext.xml");
		//2、向容器“要”user对象
		User bean = (User) app.getBean("user"); 
		
		
		//打印user对象
		System.out.println(bean);
	}
		//创建方式二,静态工厂创建
		@Test
		public void test2() {
			//1、创建容器对象
			ApplicationContext app = new ClassPathXmlApplicationContext("com/lzp/create/applicationContext.xml");
			//2、向容器“要”user对象
			User bean = (User) app.getBean("user2"); 
			//打印user对象
			System.out.println(bean);
		}
		
			//创建方式三,实例工厂创建
				@Test
				public void test3() {
					//1、创建容器对象
					ApplicationContext app = new ClassPathXmlApplicationContext("com/lzp/create/applicationContext.xml");
					//2、向容器“要”user对象
					User bean = (User) app.getBean("user3"); 
					//打印user对象
					System.out.println(bean);
				}

}

猜你喜欢

转载自blog.csdn.net/lzpzwy/article/details/80706605