//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. 【转】Android开发20——单个监听器监听多个按钮点击事件

    原文网址:http://woshixy.blog.51cto.com/5637578/1093936 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律 ...

  2. process thread Fiber(linux)

    http://blog.chinaunix.net/uid-21084809-id-2215376.html Processes, kernel threads, user threads, and ...

  3. Codeforces 633 C Spy Syndrome 2 字典树

    题意:还是比较好理解 分析:把每个单词反转,建字典树,然后暴力匹配加密串 注:然后我就是特别不理解,上面那种能过,而且时间很短,但是我想反之亦然啊 我一开始写的是,把加密串进行反转,然后单词正着建字典 ...

  4. Base-Android快速开发框架(一)--概述

    首先简单介绍一下Base.Base是本人长期以来经过10来款APP总结出来的一个Android快速开发框架.包含数据缓存模块.工具包.第三方组件包.网络模块.数据解析.常用主界面布局等.可以快速的开发 ...

  5. 【Hadoop代码笔记】Hadoop作业提交之客户端作业提交

    1.      概要描述仅仅描述向Hadoop提交作业的第一步,即调用Jobclient的submitJob方法,向Hadoop提交作业. 2.      详细描述Jobclient使用内置的JobS ...

  6. POJ1185 - 炮兵阵地(状态压缩DP)

    题目大意 中文的..直接搬过来... 司令部的将军们打算在N*M的网格地图上部署他们的炮兵部队.一个N*M的地图由N行M列组成,地图的每一格可能是山地(用"H" 表示),也可能是平 ...

  7. linux下ssh使用rsa验证登陆MACOX

    由于项目的需求,我这边ubuntu下常常需要SSH访问另外一台MACOS. 每次输入密码有点烦,就想到RSA公钥和密钥验证的方法. 像所有教程上讲的一样,本机执行 gong@hzsx:~$ ssh-k ...

  8. 通过在shell脚本中用scp或rsync实现远程同步文件

    通过在shell脚本中用expect实现远程scp文件  shell expect的简单用法 http://myunix.blog.51cto.com/191254/1095074 http://ji ...

  9. [OC Foundation框架 - 14] NSNull

    在NSDictionary中,nil代表结束,允许存入 使用NSNull代替   int main(int argc, const char * argv[]) { @autoreleasepool ...

  10. 锋利的jquery第二版学习笔记

    jquery系统学习笔记 一.初识:jquery的优势:1.轻量级(压缩后不到30KB)2.强大的选择器(支持css1.css2选择器的全部 css3的大部分 以及一些独创的 加入插件的话还可支持XP ...