三种实例化bean的方式

在spring中有三中实例化bean的方式:

一、使用构造器实例化;(90%通常使用的一个方法)

二、使用静态工厂方法实例化;

三、使用实例化工厂方法实例化。

每种实例化所采用的配置是不一样的:

一、使用构造器实例化;

这种实例化的方式可能在我们平时的开发中用到的是最多的,因为在xml文件中配置简单并且也不需要额外的工厂类来实现。

Xml代码  

  1. <!--applicationContext.xml配置:-->
  2. <bean id="personService" class="cn.mytest.service.impl.PersonServiceBean"></bean>

id是对象的名称,class是要实例化的类,然后再通过正常的方式进调用实例化的类即可,比如:

Java代码  

  1. public void instanceSpring(){
  2. //加载spring配置文件
  3. ApplicationContext ac = new ClassPathXmlApplicationContext(
  4. new String[]{
  5. "/conf/applicationContext.xml"
  6. });
  7. //调用getBean方法取得被实例化的对象。
  8. PersonServiceBean psb = (PersonServiceBean) ac.getBean("personService");
  9. psb.save();
  10. }

采用这种实例化方式要注意的是:要实例化的类中如果有构造器的话,一定要有一个无参的构造器。

二、使用静态工厂方法实例化;

根据这个中实例化方法的名称就可以知道要想通过这种方式进行实例化就要具备两个条件:(一)、要有工厂类及其工厂方法;(二)、工厂方法是静态的。OK,知道这两点就好办了,首先创建工程类及其静态方法:

Java代码  

  1. package cn.mytest.service.impl;
  2. /**
  3. *创建工厂类
  4. *
  5. */
  6. public class PersonServiceFactory {
  7. //创建静态方法
  8. public static PersonServiceBean createPersonServiceBean(){
  9. //返回实例化的类的对象
  10. return new PersonServiceBean();
  11. }
  12. }

然后再去配置spring配置文件,配置的方法和上面有点不同,这里也是关键所在

Xml代码  

  1. <!--applicationContext.xml配置:-->
  2. <bean id="personService1" class="cn.mytest.service.impl.PersonServiceFactory" factory-method="createPersonServiceBean"></bean>

id是实例化的对象的名称,class是工厂类,也就实现实例化类的静态方法所属的类,factory-method是实现实例化类的静态方法。

然后按照正常的调用方法去调用即可:

Java代码  

  1. public void instanceSpring(){
  2. //加载spring配置文件
  3. ApplicationContext ac = new ClassPathXmlApplicationContext(
  4. new String[]{
  5. "/conf/applicationContext.xml"
  6. });
  7. //调用getBean方法取得被实例化的对象。
  8. PersonServiceBean psb = (PersonServiceBean) ac.getBean("personService1");
  9. psb.save();
  10. }

三、使用实例化工厂方法实例化。

这个方法和上面的方法不同之处在与使用该实例化方式工厂方法不需要是静态的,但是在spring的配置文件中需要配置更多的内容,,首先创建工厂类及工厂方法:

Java代码  

  1. package cn.mytest.service.impl;
  2. /**
  3. *创建工厂类
  4. *
  5. */
  6. public class PersonServiceFactory {
  7. //创建静态方法
  8. public PersonServiceBean createPersonServiceBean1(){
  9. //返回实例化的类的对象
  10. return new PersonServiceBean();
  11. }
  12. }

然后再去配置spring配置文件,配置的方法和上面有点不同,这里也是关键所在

Xml代码  

  1. <!--applicationContext.xml配置:-->
  2. <bean id="personServiceFactory" class="cn.mytest.service.impl.PersonServiceFactory"></bean>
  3. <bean id="personService2" factory-bean="personServiceFactory" factory-method="createPersonServiceBean1"></bean>

这里需要配置两个bean,第一个bean使用的构造器方法实例化工厂类,第二个bean中的id是实例化对象的名称,factory-bean对应的被实例化的工厂类的对象名称,也就是第一个bean的id,factory-method是非静态工厂方法。

然后按照正常的调用方法去调用即可:

Java代码  

  1. public void instanceSpring(){
  2. //加载spring配置文件
  3. ApplicationContext ac = new ClassPathXmlApplicationContext(
  4. new String[]{
  5. "/conf/applicationContext.xml"
  6. });
  7. //调用getBean方法取得被实例化的对象。
  8. PersonServiceBean psb = (PersonServiceBean) ac.getBean("personService2");
  9. psb.save();
  10. }
时间: 2024-08-07 23:23:39

三种实例化bean的方式的相关文章

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

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 PersonServi

Spring入门学习(二)三种实例化bean的方法

前面的哪一种就是通过构造函数来实例化对象 下面我们可能用到工厂方法来视力话对象,这样我们的配置文件又该怎么配置呢 <bean name="service2" class="com.factory.ServiceFactory" factory-method="getService"></bean> 1 package com.factory; 2 3 import com.service.Service; 4 import

Request三种获取数据的方式

今天在做ajax请求后台代码时,发现ajax的方法都对,但就是请求不了后台代码,后来在同事帮助下才发现前台定义了两个相同参数导致请求出错. 下面记录一下request三种获取数据的方式: 1. Request.QueryString: 该方法主要是获取页面路径URL的参数: 2. Request.Form:该方法主要是以post请求方式获取报文体的参数: 3. Request.param:包含上面两种方式,它会在QueryString,Form,ServerVariable中都搜索一遍: 而我今

Objective-C:三种文件导入的方式以及atomic和nonatomic的区别

一.三种文件导入的方式比较: 类的前项声明@class.import.include: 1.采用@class 类名的方式,它会告诉编译器有这么一个类,目前不需要知道它内部的实例变量和方法是如何定义的,后面会告你,现在你就可以直接使用它,节约程序编译时间: 2.采用import方式,能避免重复导入同一类,它导入的不但这个类的所有的内容,而且使用它之前,编译器必须先对类的所有内容走一遍,就是先做预编译处理,这样比较耗费程序编译的时间. 3.采用include方式,不能避免重复导入的问题,但是它用在C

Spring 实例化bean的方式

实例化bean的方式有三种: 1.用构造器来实例化 2.使用静态工厂方法实例化 3.使用实例工厂方法实例化 当采用构造器来创建bean实例时,Spring对class并没有特殊的要求, 我们通常使用的class都适用 基于XML的元数据配置文件,可以这样来指定bean类: 当采用静态工厂方法创建bean时,除了需要指定class 属性外,还需要通过factory-method属性来指定创建bean实例 的工厂方法.Spring将调用此方法(其可选参数接下来介绍)返回实例对象,就此而言, 跟通过普

Objective-C:三种文件导入的方式比较

三种文件导入的方式比较: 类的前项声明@class.import.include: 1.采用@class 类名的方式,它会告诉编译器有这么一个类,目前不需要知道它内部的实例变量和方法是如何定义的,后面会告诉你,现在你就可以直接使用它,节约程序编译时间: 2.采用import方式,能避免重复导入同一类,它导入的不但这个类的所有的内容,而且使用它之前,编译器必须先对类的所有内容走一遍,就是先做预编译处理,这样比较耗费程序编译的时间. 3.采用include方式,不能避免重复导入的问题,但是它用在C/

三种实现Ajax的方式

本文主要是比较三种实现Ajax的方式 1. prototype.js 2. jquery1.3.2.min.js 3. json2.js Java代码 收藏代码 后台处理程序(Servlet),访问路径servlet/testAjax: package ajax.servlet; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.s

三种Tomcat集群方式的优缺点分析

三种Tomcat集群方式的优缺点分析 2009-09-01 10:00 kit_lo kit_lo的博客 字号:T | T 本文对三种Tomcat集群方式的优缺点进行了分析.三种集群方式分别是:使用DNS轮询,使用Apache R-proxy方式,以及使用Apache mod_jk方式. AD:WOT2014课程推荐:实战MSA:用开源软件搭建微服务系统 Tomcat集群方式有三种,分别是: 1.使用DNS轮询. 2.使用Apache R-proxy方式. 3.使用Apache mod_jk方式