1.用构造器来实例化

  1. <bean id="hello2" class="com.hsit.hello.impl.ENhello" />

2.使用静态工厂方法实例化

要写一个bean,bean中定义一个静态方法,生成bean,配置factory-method指定静态方法,运行时容器就会自动调用静态方法生成实例

bean

  1. package com.hsit.hello.impl;
  2. import com.hsit.hello.IHello;
  3. public class CHhello implements IHello {
  4. private String msg;
  5. public void sayHello() {
  6. System.out.println("中文" + msg);
  7. }
  8. public String getMsg() {
  9. return msg;
  10. }
  11. public void setMsg(String msg) {
  12. this.msg = msg;
  13. }
  14. @Override
  15. public String toString() {
  16. // TODO Auto-generated method stub
  17. return "Chinese";
  18. }
  19. public static CHhello createInstance() {
  20. System.out.println("jingtai");
  21. return new CHhello();
  22. }
  23. }

配置文件

  1. <bean id="hello1" class="com.hsit.hello.impl.CHhello" factory-method="createInstance" lazy-init="true">
  2. <!-- setter注入 -->
  3. <property name="msg" value="哈哈">
  4. </property>
  5. </bean>

3.使用实例工厂方法实例化

要写两个bean,一个是要实例化的bean,另一个是工厂bean。容器先实例化工厂bean,然后调用工厂bean配置项factory-method中指定的方法,在方法中实例化bean

工厂bean:

  1. package com.hsit.hello.impl;
  2. public class ENhelloFactory {
  3. public ENhello createInstance() {
  4. System.out.println("ENhello工厂");
  5. return new ENhello();
  6. }
  7. public ENhelloFactory() {
  8. System.out.println("chuanjian");
  9. }
  10. }

要实例化的bean:

  1. package com.hsit.hello.impl;
  2. import com.hsit.hello.IHello;
  3. public class ENhello implements IHello {
  4. @Override
  5. public void sayHello() {
  6. // TODO Auto-generated method stub
  7. System.out.println("hello");
  8. }
  9. @Override
  10. public String toString() {
  11. // TODO Auto-generated method stub
  12. return "我是ENhello";
  13. }
  14. }

配置文件

  1. <bean id="eHelloFactory" class="com.hsit.hello.impl.ENhelloFactory" />
  2. <!-- factory-bean填上工厂bean的id,指定工厂bean的工厂方法生成实例,class属性不填 -->
  3. <bean id="example" factory-bean="eHelloFactory" factory-method="createInstance"/>

测试代码

  1. BeanFactory factory = new ClassPathXmlApplicationContext("applicationContext.xml");
  2. ENhello eNhello = (ENhello) factory.getBean("example");
  3. System.out.println(eNhello.toString());
  4. factory.getBean("hello1");

Spring实例化bean的三种方法的更多相关文章

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

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

  2. spring注入bean的三种方法

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

  3. Spring 实例化bean的三种方式

    第一种方法:直接配置Bean <bena id="所需要实例化的一个实例名称" class="包名.类名"/> 例如: 配置文件中的bean.XML ...

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

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

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

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

  6. Spring 实例化bean的三种方式:

    方法一:使用构造器实例化bean java代码: package com.model; public class User { private String username; public User ...

  7. Spring -- 配置bean的三种方法

    配置通过静态工厂方法创建的bean public class StaticBookFactory { //静态工厂方法: public static Book getBook(String bookN ...

  8. spring实例化bean的三种方式

    公共使用的实体

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

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

随机推荐

  1. hbuilder工具快捷键 http://www.qq210.com/shoutu/android

    http://www.qq210.com/shoutu/android 创建HTML结构: h 8 (敲h激活代码块列表,按8选择第8个项目,即HTML代码块,或者敲h t Enter)中途换行: ' ...

  2. MVC中Area的使用

    1.Area是什么? MVC 2 中引进了区域的概念,它允许将模型,视图和控制器分成单独的功能节点,换句话说,可以在大型复杂的网站中建立几个区域(模块),每一个区域都有Model,View,Contr ...

  3. yii之srbac详解

    一.安装篇 1.下载http://www.yiiframework.com/extension/srbac/ 将解压得到的srbac文件夹放在moudles目录下. 2.在项目的主配置文件中mai.p ...

  4. 如何在windows上安装部署设置SVN服务器

    1   一.准备工作 1.SVN服务器:解压缩包,可以从官方网站下载最新版本. 2.SVN客户端:TortoiseSVN,即常说的小乌龟,是一个客户端程序,用来与服务器端通讯. 2 二.安装服务器和客 ...

  5. Python之路----数据类型

    Python的集成开发环境(IDE):pycharm 数据类型 数字 整数int(integer) 浮点数float 布尔型,只有两个值 真:True 假:False 字符串 列表 元组 字典 一.字 ...

  6. LeetCode【第217题】Contains Duplicate

    题目: ''' Given an array of integers, find if the array contains any duplicates. Your function should ...

  7. mysql-5.5.25-winx64在win7 x64 免安装配置

    os:win7 x64 mysql:mysql-5.5.25-winx64 将mysql-5.5.25-winx64.zip 解压缩到F:\mysql-5.5.25-winx64 目录下: 1.将my ...

  8. 除了判断语句if switch 我们还可以怎么做?-b

    之前项目中有根据后台数据执行不同代码,根据不同的字符串返回不同UIViewController对象,最开始需要的vc 种类不多我用的是if else 做字符串比较再执行不同代码,但是如果需求的vc 有 ...

  9. sublime 编译程序出错控制台打印PATH的解决办法

    找到sublime的安装目录 搜索 exec.py 打开找到这几句话193行左右或者搜索关键词path if "PATH" in merged_env: self.debug_te ...

  10. uva 12097 - Pie

    简单题,二分就行: #include<cstdio> #include<cmath> #define pi acos(-1.0) #define eps 0.000001 #d ...