三种实例化bean方式——Spring对bean的管理(一)

Spring容器提供了三种对bean的实例化方式:
1)构造器实例化
2)静态工厂方法实例化
3)实例工厂方法是实例化


构造方法实例化

先建一个Demo实体类

public class Demo {private String name;//getter和setter方法略
}

在配置文件中使用构造方法实例化

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsd"><!-- 构造器实例化 --><bean id="demo1" class="com.oak.junit.day01.Demo"></bean>
</beans>

测试:

 @Testpublic void testCtx() {//实例化Spring容器ApplicationContext ctx = new ClassPathXmlApplicationContext("spring.xml"); //取出demo1Demo demo1=ctx.getBean("demo1",Demo.class);System.out.println(demo1);}

静态工厂方法实例化

新建一个工厂类-DemoBeanFactory.java,添加静态工厂方法

public class DemoBeanFactory {//静态工厂方法-返回一个Demo实例public static Demo staticDemoBean(){return new Demo();}
}

在xml中添加静态工厂方法实例化Demo对象

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsd"><!-- 构造器实例化 --><bean id="demo1" class="com.oak.junit.day01.Demo"></bean><!-- 静态工厂实例化 class为工厂类 factory-method为静态工厂方法  --><bean id="demo2" class="com.oak.junit.day01.DemoBeanFactory" factory-method="staticDemoBean"></bean>
</beans>

测试:

 @Testpublic void testCtx() {//实例化Spring容器ApplicationContext ctx = new ClassPathXmlApplicationContext("spring.xml"); //取出demo1Demo demo1=ctx.getBean("demo1",Demo.class);System.out.println(demo1);//取出demo2Demo demo2=ctx.getBean("demo2",Demo.class);System.out.println(demo2);}

实例工厂方法实例化

在工厂类中加入实例工厂方法

public class DemoBeanFactory {//静态工厂方法-返回一个Demo实例public static Demo staticDemoBean(){return new Demo();}//实例工厂方法-返回一个Demo实例public Demo constructorDemoBean(){return new Demo();}
}

在xml中添加实例工厂方法实例化

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsd"><!-- 构造器实例化 --><bean id="demo1" class="com.oak.junit.day01.Demo"></bean><!-- 静态工厂实例化 class为工厂类 factory-method为静态工厂方法  --><bean id="demo2" class="com.oak.junit.day01.DemoBeanFactory" factory-method="staticDemoBean"></bean><!-- 先实例化工厂类 --><bean id="demoBeanFactory" class="com.oak.junit.day01.DemoBeanFactory"></bean><!-- 实例工厂实例化 class为工厂类 factory-bean指定工厂类  factory-method为实例工厂方法  --><bean id="demo3" factory-bean="demoBeanFactory" factory-method="constructorDemoBean"></bean>
</beans>

测试:

@Testpublic void testCtx() {//实例化Spring容器ApplicationContext ctx = new ClassPathXmlApplicationContext("spring.xml"); //取出demo1Demo demo1=ctx.getBean("demo1",Demo.class);System.out.println(demo1);//取出demo2Demo demo2=ctx.getBean("demo2",Demo.class);System.out.println(demo2);//取出demo2Demo demo3=ctx.getBean("demo3",Demo.class);System.out.println(demo3);}

此三种方式最常用的是使用类构造器实例化bean

三种实例化bean方式——Spring对bean的管理(一)相关推荐

  1. c++三种实例化对象方式

    1.隐式创建 首先我们定义一个测试类 class Person {private:int age;string name;public:Person() {cout<<"this ...

  2. C++的三种实例化对象方式

    一.隐式创建 class CEmployee { private: int age; int id; public: CEmployee() { cout << "这是构造函数& ...

  3. (转)Spring的三种实例化Bean的方式

    http://blog.csdn.net/yerenyuan_pku/article/details/52832793 Spring提供了三种实例化Bean的方式. 使用类构造器实例化. <be ...

  4. Verilog VHDL三种建模描述方式——2选1数据选择器

    标题Quartus II 标题 Verilog VHDL三种建模描述方式--2选1数据选择器 1,结构化描述方式: 是使用实例化低层次模块的方法,即调用其他已经定义过的低层次模块对整个电路的功能进行描 ...

  5. 了解mysql的三种不同安装方式的区别

    学习目的:了解mysql的三种不同安装方式的区别 学习内容: mysql 的安装有三种:分别是源码安装.二进制安装.rpm安装. 源码安装的优势:linux操作系统开放源代码,因此在其上面安装的软件大 ...

  6. lvs的调度算法有几种_LVS:三种负载均衡方式比较

    1.什么是LVS? 首先简单介绍一下LVS (Linux Virtual Server)到底是什么东西,其实它是一种集群(Cluster)技术,采用IP负载均衡技术和基于内容请求分发技术.调度器具有很 ...

  7. 多角度对比数据中心常见的三种走线方式

    01 三种走线方式的施工图片 ▽下走线(地板下走线) ▽天花吊顶上走线 ▽机柜顶部走线 02 三种走线方式对比 通过上面的比较,毫无疑问,机柜顶部走线模式是最有优势的,给用户带来很多好处,包括维护方便 ...

  8. asp.net session 介绍一三种Session存储方式

    asp.net session 介绍一三种Session存储方式 www.firnow.com 时间:2009-03-04 作者:匿名 编辑:sky 点击: 1478 [评论] 对于asp.net的程 ...

  9. Apache Spark探秘:三种分布式部署方式比较

    2019独角兽企业重金招聘Python工程师标准>>> 目前Apache Spark支持三种分布式部署方式,分别是standalone.spark on mesos和 spark o ...

  10. Class java用法,java中Class的三种实例化

    1.调用Object类中的getClass()方法:import java.util.Date; public class ReflectTest3 { public static void main ...

最新文章

  1. centos7.3修改mysql密码_Centos7.3下mysql5.7.18安装并修改初始密码的方法
  2. android中一些能在国外使用的第三方地图
  3. linux-basic(10)vim程序编辑器
  4. Java 的混合执行模式
  5. 踢爆关于创业公司的五大认知误区!
  6. java 天上掉东西游戏的源代码_【小游戏】前两天的小游戏终于调试成功了。。。。直接源代码...
  7. C# 中取绝对值的函数
  8. 基于FPGA的LVDS接口设计
  9. linux btrfs 格式化,Btrfs 文件系统修复技巧
  10. java中的Character和char的区别
  11. 1.488Mpps是如何计算出来的
  12. 【粒子动画tsParticles】
  13. 卡耐基人性的弱点目录
  14. 创建table报错 [Err] 1067 - Invalid default value for ‘XXX‘
  15. python输入年月日输出_python下输出指定年月日的方法之一
  16. Apache Mina
  17. 【攻略】前端特工 - 腾讯CodeStar代码星计划
  18. android免root自动化,免root自动化安卓助手
  19. cad哪个版本最好用?转换软件说明
  20. 网站优化 SEO教程

热门文章

  1. 透過 OpenNI / NITE 分析人體骨架(下)
  2. Linux下的Libsvm使用历程录
  3. 【BZOJ 3531 Sdoi2014】旅行【动态开点线段树+树链剖分】
  4. Ubuntu sudo nopasswd方法
  5. 简单记录 Part1.3
  6. SpringBoot+Quartz实现动态可配定时任务(动态定时任务)
  7. CONVERT TEXT(转换为可排序格式)
  8. Python的time,datetime,string相互转换
  9. 基于stm32CubeMX和keil5的stm32f103学习编程
  10. 类的使用---进阶编程篇(四)