Spring(三)Spring三种实例化JavaBean的方式

Spring实例化JavaBean的方式有三种:使用类构造器实例化使用静态工厂方法实例化使用实例化工厂实例化

package test.spring.service;

public interface PersonService {

	public abstract void save();

}
package test.spring.service.impl;

import test.spring.service.PersonService;

public class PersonServiceBean implements PersonService {

	@Override
	public void save(){
		System.out.println("=============");
	}
}
package test.spring.service.impl;

public class PersonServiceBeanFactory {
	// 静态工厂方法
	public static PersonServiceBean createPersonServiceBean() {
		return new PersonServiceBean();
	}

	// 实例工厂方法
	public PersonServiceBean createPersonServiceBean2() {
		return new PersonServiceBean();
	}
}

使用实例化工厂方法需先配置工厂类,再配置工厂方法。用得最多的是第一种。

<?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-2.5.xsd">

	<!-- 这时候这个bean就可以由spring帮我们创建和维护,用到时只需从spring容器中获取 -->
	<bean id="personService" class="test.spring.service.impl.PersonServiceBean"></bean>
	<bean id="personService2" class="test.spring.service.impl.PersonServiceBeanFactory"
		factory-method="createPersonServiceBean"></bean>
	<bean id="personServiceFactory" class="test.spring.service.impl.PersonServiceBeanFactory"></bean>
	<bean id="personService3" factory-bean="personServiceFactory"
		factory-method="createPersonServiceBean2"></bean>

</beans>
package test.spring.jnit;

import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import test.spring.service.PersonService;

public class SpringTest {

	@Test
	public void testInstanceSpring() {
		// ApplicationContext applicationContext = new
		// ClassPathXmlApplicationContext(
		// new String[] { "beans.xml" });

		//使用类构造器实例化,用的是默认构造函数
		ApplicationContext applicationContext = new ClassPathXmlApplicationContext(
				"beans.xml");

		// PersonService personService = (PersonService) applicationContext
		// .getBean("personService");// 得到的是Object,需进行转换

		// BeanManageTest beanManageTest = new BeanManageTest("beans.xml");
		// PersonService personService = (PersonService) beanManageTest
		// .getBean("personService");// 得到的是Object,需进行转换

		// 使用静态工厂方法实例化
		// PersonService personService = (PersonService) applicationContext
		// .getBean("personService2");

		// 使用实例化工厂实例化
		PersonService personService = (PersonService) applicationContext
				.getBean("personService3");
		personService.save();
	}

}

版权声明:本文为博主原创文章,未经博主允许不得转载。如需转载,请注明出处:http://blog.csdn.net/lindonglian

时间: 2024-10-14 12:57:37

Spring(三)Spring三种实例化JavaBean的方式的相关文章

spring三种实例化bean的方式

1构造函数实例化 2静态工厂方法实例化 3实例工厂方法实例化 service接口: package service; public interface PersonService { public void save(); } PersonServiceBean: package service.impl; import service.PersonService; public class PersonServiceBean implements PersonService { public

三种实例化bean的方式

在spring中有三中实例化bean的方式: 一.使用构造器实例化:(90%通常使用的一个方法) 二.使用静态工厂方法实例化: 三.使用实例化工厂方法实例化. 每种实例化所采用的配置是不一样的: 一.使用构造器实例化: 这种实例化的方式可能在我们平时的开发中用到的是最多的,因为在xml文件中配置简单并且也不需要额外的工厂类来实现. Xml代码   <!--applicationContext.xml配置:--> <bean id="personService" cla

Java-第三篇3种创建的线程方式

1.Java使用Thread类代表线程,所有的线程对象必须是Thread类或其子类的实例. 当线程继承Thread类时,直接使用this即可获取当前线程,Thread对象的getName()方法返回当前线程的名字,因此可以直接调用getName()方法返回当前线程的名字. Thread.currentThread():该方法总是返回当前正在执行的线程对象. 2.创建线程方式1:继承Thread类创建线程类 这种方式创建线程的步骤一般为: 1>定义Thread类的子类,并重写该类的run()方法,

(转载)Spring定时任务的几种实现

spring框架定时任务 一.分类 从实现的技术上来分类,目前主要有三种技术(或者说有三种产品): Java自带的java.util.Timer类,这个类允许你调度一个java.util.TimerTask任务.使用这种方式可以让你的程序按照某一个频度执行,但不能在指定时间运行.一般用的较少,这篇文章将不做详细介绍. 使用Quartz,这是一个功能比较强大的的调度器,可以让你的程序在指定时间执行,也可以按照某一个频度执行,配置起来稍显复杂,稍后会详细介绍. Spring3.0以后自带的task,

Spring定时任务的几种实现 附实例

关于在spring中应用定时任务,前些年用的多的是基于 quartz,后来spring3之后自带的spring task用的越来越多,感觉在一般情况下spring task已经足够应付了,而且足够简单. 在网上搜了以下这篇文章做为总结.转自:http://gong1208.iteye.com/blog/1773177,之后附上一个spring task的小实例. ===================================================================

(转)Spring定时任务的几种实现

Spring定时任务的几种实现 转自http://gong1208.iteye.com/blog/1773177 近日项目开发中需要执行一些定时任务,比如需要在每天凌晨时候,分析一次前一天的日志信息,借此机会整理了一下定时任务的几种实现方式,由于项目采用spring框架,所以我都将结合 spring框架来介绍. 一.分类 从实现的技术上来分类,目前主要有三种技术(或者说有三种产品): Java自带的java.util.Timer类,这个类允许你调度一个java.util.TimerTask任务.

spring定时任务的几种实现方式

Spring定时任务的几种实现 近日项目开发中需要执行一些定时任务,比如需要在每天凌晨时候,分析一次前一天的日志信息,借此机会整理了一下定时任务的几种实现方式,由于项目采用spring框架,所以我都将结合 spring框架来介绍. 一.分类 从实现的技术上来分类,目前主要有三种技术(或者说有三种产品): Java自带的java.util.Timer类,这个类允许你调度一个java.util.TimerTask任务.使用这种方式可以让你的程序按照某一个频度执行,但不能在指定时间运行.一般用的较少,

(3)Spring定时任务的几种实现

Spring定时任务的几种实现 近日项目开发中需要执行一些定时任务,比如需要在每天凌晨时候,分析一次前一天的日志信息,借此机会整理了一下定时任务的几种实现方式,由于项目采用spring框架,所以我都将结合 spring框架来介绍. 一.分类 从实现的技术上来分类,目前主要有三种技术(或者说有三种产品): Java自带的java.util.Timer类,这个类允许你调度一个java.util.TimerTask任务.使用这种方式可以让你的程序按照某一个频度执行,但不能在指定时间运行.一般用的较少,

spring定时任务的几种实现(转)

一.分类 从实现的技术上来分类,目前主要有三种技术(或者说有三种产品): Java自带的java.util.Timer类,这个类允许你调度一个java.util.TimerTask任务.使用这种方式可以让你的程序按照某一个频度执行,但不能在指定时间运行.一般用的较少,这篇文章将不做详细介绍. 使用Quartz,这是一个功能比较强大的的调度器,可以让你的程序在指定时间执行,也可以按照某一个频度执行,配置起来稍显复杂,稍后会详细介绍. Spring3.0以后自带的task,可以将它看成一个轻量级的Q