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. 用javascript操作xml

    用javascript操作xml 可以使用标准DOM操作. IE创建XML MSXML2.0DOMDocument function createXMLDOM(){ var version = [ ' ...

  2. php5.3 不支持 session_register() 此函数已启用的解决方法

    php从5.2.x升级到5.3.2.出来问题了.有些原来能用的程序报错了,Deprecated: Function session_register() is deprecated php从5.2.x ...

  3. arm-linux-gcc编译器测试

    1.#include <>与#include ""的区别 #include <>只在标准库中搜索头文件,而#include ""首先在用 ...

  4. Js Carousel

    http://getbootstrap.com/javascript/#carousel http://owlgraphic.com/owlcarousel/#demo https://www.mob ...

  5. Length of Last Word | Leetcode

    Given a string s consists of upper/lower-case alphabets and empty space characters ' ', return the l ...

  6. 运行avalon.define()发生的事情

      avalon.define = function(id, factory) { var $id = id.$id || id if (!$id) { log("warning: vm必须 ...

  7. leetcode第八题 String to Integer (atoi) (java)

    String to Integer (atoi) time=272ms   accepted 需考虑各种可能出现的情况 public class Solution { public int atoi( ...

  8. Python连接Redis连接配置

    1. 测试连接: Python 2.7.8 (default, Oct 20 2014, 15:05:19) [GCC 4.9.1] on linux2 Type "help", ...

  9. 关于django Models的个人理解和related_name的使用

    作为一个新人(刚刚大学还没有毕业就出来实习,可以说是真的什么都不知到,什么都要重新学,但是这样真的可以锻炼自己的意志力和能力).现在在公 司是前端和后端一起坐,所以要学的东西是真的多的让人想不到.在学 ...

  10. C++的try catch到底能防止什么错误?

    我在.h文件里定义:    LoadingWidget* w;然后.cpp文件里定义: void MyClass::ModifyTask(){    // w = new LoadingWidget( ...