//Dao类

package com.dao.bean.www;

public interface PersonServiceDao {

	public abstract void save();

}

//Bean

package com.bean.www;

import com.dao.bean.www.PersonServiceDao;

public class PersonServiceBean implements PersonServiceDao {

	@Override
public void save() {
System.out.println("method save()");
}
}

//第二第三种需要的工厂方法

package com.factory.www;

import com.bean.www.PersonServiceBean;

public class PersonServiceFactory {
public static PersonServiceBean creatBean() {
return new PersonServiceBean();
} public PersonServiceBean creatBean2() {
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"
xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd"> <!-- 获取bean -->
<bean id="personService" class="com.bean.www.PersonServiceBean"></bean> <!-- 静态工厂方法 -->
<bean id="beanFactory1" class="com.factory.www.PersonServiceFactory" factory-method="creatBean" ></bean> <!-- 非静态工厂方法 1.首先实例化工厂类bean -->
<bean id="beanFactory2" class="com.factory.www.PersonServiceFactory" ></bean>
<bean id="GetBean" factory-bean="beanFactory2" factory-method="creatBean2" ></bean>
</beans>

//测试类

package com.itcast.www;

import static org.junit.Assert.*;

import org.junit.BeforeClass;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext; import com.dao.bean.www.PersonServiceDao; public class TestCaseDemo { @BeforeClass
public static void setUpBeforeClass() throws Exception {
} @Test
public void instanceSpring() { ApplicationContext ctx = new ClassPathXmlApplicationContext(
"applicationContext.xml"); // PersonServiceDao personService = (PersonServiceDao) ctx
// .getBean("personService");
// PersonServiceDao personService = (PersonServiceDao) ctx
// .getBean("beanFactory1");
PersonServiceDao personService = (PersonServiceDao) ctx
.getBean("GetBean");
personService.save(); } }

//************************初始化和构造函数******************************

package com.bean.www;

import com.dao.bean.www.PersonServiceDao;
/*
* 初始化方法执行在构造方法之后
* 需要在配置文件中配置初始化或者销毁方法
* 用于打开或者关闭资源等
* 单实例-lazy-init=true 获取容器后创建
* lazy-init=false ctx.getbean实现
* 直到关闭才执行destroy方法
* 关闭方法 ctx.close();
* */
public class PersonServiceBean implements PersonServiceDao { public void init(){
System.out.println("init..................");
} @Override
public void save() {
System.out.println("method save()");
} public void destroy(){
System.out.println("destroy..................");
}
}

//配置文件

<bean id="personService" class="com.bean.www.PersonServiceBean" lazy-init="false" init-method="init" destroy-method=""></bean>

java_spring_实例化bean的3种方法的更多相关文章

  1. Spring Ioc源码分析系列--容器实例化Bean的四种方法

    Spring Ioc源码分析系列--实例化Bean的几种方法 前言 前面的文章Spring Ioc源码分析系列--Bean实例化过程(二)在讲解到bean真正通过那些方式实例化出来的时候,并没有继续分 ...

  2. 实例化Bean的几种方法

    1.使用构造器实例化Bean.         当没有指定实例化方法时,Spring IoC容器能使用默认空构造器.构造器实例化包括默认空构造器和有参数构造器两种方式创建Bean. 2.使用构造器实例 ...

  3. 吴裕雄--天生自然JAVA SPRING框架开发学习笔记:Spring实例化Bean的三种方法

    在面向对象的程序中,要想调用某个类的成员方法,就需要先实例化该类的对象.在 Spring 中,实例化 Bean 有三种方式,分别是构造器实例化.静态工厂方式实例化和实例工厂方式实例化. 构造器实例化 ...

  4. Spring实例化bean的三种方法

    1.用构造器来实例化 <bean id="hello2" class="com.hsit.hello.impl.ENhello" /> 2.使用静态 ...

  5. Spring、实例化Bean的三种方法

    1.使用类构造器进行实例化 <bean id="personIService" class="cn.server.impl.PersonServiceImpl&qu ...

  6. Spring学习之实例化bean的三种方式

    实例化bean的三种方式 构造器实例化bean Person.java public class Person { private String name; private Integer age; ...

  7. Spring实例化Bean的三种方式及Bean的类型

    1.使用类构造器实例化  [默认的类构造器] <bean id=“orderService" class="cn.itcast.OrderServiceBean"/ ...

  8. 普通Java类获取spring 容器的bean的5种方法

    方法一:在初始化时保存ApplicationContext对象方法二:通过Spring提供的工具类获取ApplicationContext对象方法三:继承自抽象类ApplicationObjectSu ...

  9. spring注入bean的三种方法

    在Spring的世界中, 我们通常会利用bean config file 或者 annotation注解方式来配置bean. 在第一种利用bean config file(spring xml)方式中 ...

随机推荐

  1. c语言宏定义#define的理解与资料整理

    1. 利用define来定义 数值宏常量 #define 宏定义是个演技非常高超的替身演员,但也会经常耍大牌的,所以我们用它要慎之又慎.它可以出现在代码的任何地方,从本行宏定义开始,以后的代码就就都认 ...

  2. RMAN数据库异机迁移

    本文讲述如何用rman将一个库迁移到另一个服务器上. 服务器A:linux es4 + oracle9204 (源)服务器B:linux es4 + oracle9204 (目标) 一.创建目录 为了 ...

  3. 学习面试题Day03

    1.Java中的注释有哪些? 如果不算Annotation,Java的注释有3种,即行注释.块注释和文档注释.它们往往适合于不同地方的注释,其中文档注释比较特殊,它的注释信息可以进入到javadoc文 ...

  4. 我的WCF之旅(1):创建一个简单的WCF程序

    为了使读者对基于WCF的编程模型有一个直观的映像,我将带领读者一步一步地创建一个完整的WCF应用.本应用功能虽然简单,但它涵盖了一个完整WCF应用的基本结构.对那些对WCF不是很了解的读者来说,这个例 ...

  5. 【转】C/C++除法实现方式及负数取模详解

    原帖:http://blog.csdn.net/sonydvd123/article/details/8245057 一.下面的题目你能全做对吗? 1.7/4=? 2.7/(-4)=? 3.7%4=? ...

  6. FTP被动模式无法被传统CDN模式加速

    我在CDN公司,遇到一个客户需要加速ftp服务,故给出了这样的方案 客户使用的是vsftpd 2.0.5 我们建议客户在vsftpd.conf里加入如下配置 #pasvpasv_enable=YESp ...

  7. 推荐vpn的文章

    http://wsgzao.github.io/post/fq/ 免费方案 各个平台的解决方案都不唯一,请认真阅读原文中的说明部分 百度浏览器 你这么大摇大摆提供FQ插件,真不用担心360菊(jǔ)爆 ...

  8. openstack api users list get token get servers

    curl -i \  -H "Content-Type: application/json" \  -d '{ "auth": {    "ident ...

  9. 问题-Tbutton(sender) 与 (sender as Tbutton) 等价吗?

    问题:Tbutton(sender) 与 (sender as Tbutton) 等价吗?  答:  1. Sender As TButton时delphi做类型检查. 比如: var frm:TFo ...

  10. iOS: ARC和非ARC下使用Block属性的问题

    1. Block的声明和线程安全 Block属性的声明,首先需要用copy修饰符,因为只有copy后的Block才会在堆中,栈中的Block的生命周期是和栈绑定的,可以参考之前的文章(iOS: 非AR ...