1.用构造器来实例化

[html] view plaincopy print?
  1. <bean id="hello2" class="com.hsit.hello.impl.ENhello" />

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

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

bean

[java] view plaincopy print?
  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. }

配置文件

[html] view plaincopy print?
  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

[java] view plaincopy print?
  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. }
[java] view plaincopy print?
  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. }

配置文件

[html] view plaincopy print?
  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"/>

测试代码

[java] view plaincopy print?
  1. BeanFactory factory = new ClassPathXmlApplicationContext("applicationContext.xml");
  2. ENhello eNhello = (ENhello) factory.getBean("example");
  3. System.out.println(eNhello.toString());
  4. factory.getBean("hello1");

http://blog.csdn.net/q3498233/article/details/6695580

Spring实例化bean的三种方法相关推荐

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

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

  2. Spring装配bean的三种方法:自动化装配,java代码装配,XML装配及它们的混合使用

    一.自动化装配 首先,把可能被装配的类声明为组件类,告知spring要为这个类创建bean如: import org.springframework.stereotype.Component;@ Co ...

  3. spring 实例化bean的几种方法

    1.普通的通过构造函数初始化,没有指定构造函数参数的就是用默认的无参的构造方法 <bean id="exampleBean" class="examples.Exa ...

  4. Spring创建Bean的三种方式的使用和区别

    在学习Spring的时候,发现Spring的IOC(控制反转)为我们提供的三种创建Bean的方式. 1.Spring创建Bean的三种方式 这里采用XML配置,分别演示三种创建Bean的方式和代码. ...

  5. Spring 创建Bean的三种方式

    创建Bean的三种方式 第一种方式:使用默认构造函数创建. 在spring的配置文件中使用bean标签,配以id和class属性之后,且没有其他属性和标签时.采用的就是默认构造函数创建bean对象,此 ...

  6. 记下来 Spring 装配 Bean 的三种方式

    ps:拿笔记一下,面试可能会考.依赖注入DI和面向切面编程AOP是Spring框架最核心的部分.这次主要是总结依赖注入的bean的装配方式. 前言 什么是依赖注入呢?也可以称为控制反转,简单的来说,一 ...

  7. Java普通类获取Spring框架Bean 的五种方法

    方法一:在初始化时保存ApplicationContext对象 代码: ApplicationContext ac = new FileSystemXmlApplicationContex(" ...

  8. Spring2.5.6学习笔记-实例化bean的几种方法

    1. 用构造器来实例化 <bean id="exampleBean" class="examples.ExampleBean"/> <bean ...

  9. java bean销毁,销毁Spring Bean的三种方法

    @PreDestroy Java标准注解 实现DisposableBean的Destroy()方法 自定义销毁方法 XML 配置: Java注解 @Bean(destroy="destroy ...

  10. java的销毁方法_销毁Spring Bean的三种方法

    @PreDestroy Java标准注解 实现DisposableBean的Destroy()方法 自定义销毁方法 XML 配置: Java注解 @Bean(destroy="destroy ...

最新文章

  1. Node.js前置知识点(二):同步/异步
  2. Log4j 2使用教程转
  3. Egret note
  4. 如何选择和计算滤波电容?--电容使用详述
  5. ubuntu18.04新安装时Unable to locate package问题
  6. JAVA(-Xms,Xmx,Xmn-XX:newSize,-XX:MaxnewSize,-XX:PermSize,-XX:MaxPermSize)区别
  7. DenseNet论文
  8. linux运行natapp,Centos使用natapp教程
  9. 螺钉 螺母 硬币三种物体的识别
  10. HyperLynx(七)微带线串扰的仿真
  11. LAMP 技术简介(1)
  12. SCARA——OpenGL入门学习五六(三维变换、动画)
  13. 数学基础知识总结 —— 9. 什么是拉格朗日乘数法(Lagrange Multiplier,有约束条件的多元函数求极值)
  14. 一对同居男女同一天的日记
  15. 《黑马》——C++基础入门
  16. 1955年至2020年的国家GDP数据可视化-基于Pandas,Seaborn
  17. 运行深度学习出现Fail to create pixmap with Tk_GetPixmap in TkImgPhotoInstanceSetSize
  18. 常见的比较二进制工具有哪些
  19. (时间篇)关于时间的思考
  20. java溢出问题_JAVA 正则表达式的溢出问题 及不完全解决方案。 (感谢Lancelot 在评论中给出的方法)...

热门文章

  1. android 开源病毒库,ClamAV+ClamTK,开源杀毒软件
  2. 怎么画人像_画动画+耍杂技怎么玩?日本小哥串烧后居然爆火网络
  3. 对目录下所有库文件进行rpath更改操作的SHELL脚本
  4. JAVA中RGB字串转换为颜色
  5. 管理:权力是用来完成责任的
  6. 纽微特记事:发火说产品差,业务开展不了,怎么不找自已的问题
  7. Python中Image缩放、旋转、翻转等操作
  8. 为什么编译个开源就觉得自己功劳巨大(对前研发总监李某功劳的分析)
  9. deepstream-app源码没有公开,预计3.0可能公开
  10. redis php web管理,redis web界面管理工具 phpredisadmin