Spring容器提供了三种对bean的实例化方式:

1)构造器实例化

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/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
<!-- 构造器实例化 -->
<bean id="demo1" class="com.oak.junit.day01.Demo"></bean>
</beans>

测试:

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

2)静态工厂方法实例化

public class DemoBeanFactory {
//静态工厂方法-返回一个Demo实例
public static Demo staticDemoBean(){
return new 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/beans
http://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>

测试:

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

3)实例工厂方法是实例化

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

public class Demo {
private String name;
//getter和setter方法略
}
public class DemoBeanFactory {
//静态工厂方法-返回一个Demo实例
public static Demo staticDemoBean(){
return new Demo();
}
//实例工厂方法-返回一个Demo实例
public Demo constructorDemoBean(){
return new 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/beans
http://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>

测试:

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

文章转载至:https://blog.csdn.net/qq_34598667/article/details/83246492

最新文章

  1. 【JAVA集合框架之Set】
  2. 内部通信服务Factory(WCF)
  3. 最新Burpsuite Pro v1.7.03 介绍和破解版下载
  4. Linux的一个问题ircbot进程
  5. 《ASP.NET1200例》当前上下文中不存在名称configurationmanager
  6. (1)建立一个名叫Cat的类: 属性:姓名、毛色、年龄 行为:显示姓名、喊叫 (2)编写主类: 创建一个对象猫,姓名为“妮妮”,毛色为“灰色”,年龄为2岁,在屏幕上输 出该对象的毛色和年龄,让该对象调用显示姓名和喊叫两个方法。
  7. 动态链接库dll的 静态加载 与 动态加载
  8. MVVM 入门介绍
  9. CentOSx64 安装 Gearmand 和 Gearman php扩展
  10. 融会贯通——最常用的“合成复用原则”技能点Get
  11. (转)Go语言并发模型:使用 context
  12. .Net环境下调用ProtoBuf
  13. ubuntu下如何编译C语言
  14. Java列表、数组、字符串
  15. jQuery中的CSS(二)
  16. IntelliJ Idea设置单击打开文件或者双击打开文件、自动定位文件所在的位置
  17. failed to launch: nice -n 0 /home/hadoop/spark-2.3.3-bin-hadoop2.7/bin/spark-class org.apache.spark.deploy.worker.Worker --webui-port 8081 spark://namenode1:7077
  18. linux内核分析第四周学习笔记
  19. 关于Android
  20. 更新svn的客户端TortoiseSVN后 ,之前使用svn管理的文件的关联图标消失了

热门文章

  1. 006.Python循环语句while循环
  2. WPS2019党政机关单位版(无广告困扰)
  3. ssh安全优化免密登陆
  4. Linux服务之Apache服务篇
  5. 报错: Uncaught TypeError: Cannot read property &#39;prototype&#39; of undefined(Day_43)
  6. Gorm入门使用
  7. ubuntu 14.04安装mysql-python
  8. IDEA debug ConcurrentLinkedQueue时抽风
  9. 十二、.net core(.NET 6)添加通用的访问webapi的方法(包括HttpClient和HttpWebRequest)
  10. Django(49)drf解析模块源码分析