1、创建方式1:无参构造
我们先创建一个User类:

public class User {private String name;private int age;public User() {System.out.println("无参构造方法");}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}}

在spring的环境配置文件里配置:

<bean name="user" class="cn.it.bean.User"></bean>

注:上面已经配置好了,这个就不单独演示了,三种方法放在一起测试

2、创建方式二:静态工厂
创建一个UserFactory类,代码如下:

public class UserFactory {public static User createUser() {System.out.println("静态工厂");return new User();}
}

在配置文件里配置:

<!-- 调用静态工厂 --><bean name="user2" class="cn.it.create.UserFactory" factory-method="createUser"></bean>

第二种方式已经准备好了。

3、创建方式三:实例工厂:
在上面的UserFactory改成如下代码:

public class UserFactory {public static User createUser() {System.out.println("静态工厂");return new User();}public  User createUser2() {System.out.println("实例工厂");return new User();}
}

在配置文件里配置:

<!-- 调用实例工厂 --><bean name="user3" factory-bean="userFactory" factory-method="createUser2"></bean><bean name="userFactory" class="cn.it.create.UserFactory"></bean>

上面三种创建方式已经准备好了,接下来我们写一个测试类:

public class Demo {@Test//创建方法一:空参构造public void fun1() {//每次容器启动就会创建容器中所配置的所有对象ApplicationContext as = new ClassPathXmlApplicationContext("cn/it/create/applicationContext.xml");User user = (User) as.getBean("user");System.out.println(user);}@Test//创建方法二:静态工厂public void fun2() {//每次容器启动就会创建容器中所配置的所有对象ApplicationContext as = new ClassPathXmlApplicationContext("cn/it/create/applicationContext.xml");User user = (User) as.getBean("user2");System.out.println(user);}@Test//创建方法二:实例工厂public void fun3() {//每次容器启动就会创建容器中所配置的所有对象ApplicationContext as = new ClassPathXmlApplicationContext("cn/it/create/applicationContext.xml");User user = (User) as.getBean("user3");System.out.println(user);}
}

结果:

在最后,我想写一下ApplicationContext的创建方式:
ApplicationContext每次创建或者启动就会创建容器里配置的所有对象。所以列如在我们使用:

User user = (User) as.getBean("user");

获取User的对象时,user已经存在了

Spring三种对象创建方式相关推荐

  1. spring配置详解-三种对象创建方式_

    新建一个包,b_create,关于Spring创建对象的方式,咱们首先先介绍默认方式,我复制一个配置文件过来,在这个包下创建一个配置文件,把这些注释可以删掉了,现在咱们看到的情况,是常见的情况,这种情 ...

  2. Spring学习(二)—— 对象创建方式及依赖注入

    文章目录 对象创建方式 配置 依赖注入 构造器注入 Set方式注入 拓展方式注入 对象创建方式 默认使用无参构造器创建 当我们需要使用有参构造器时,有以下几种方式: 1.下标赋值 <!--第一种 ...

  3. javascript一种新的对象创建方式-Object.create()

    1.Object.create() 是什么? Object.create(proto [, propertiesObject ]) 是E5中提出的一种新的对象创建方式,第一个参数是要继承的原型,如果不 ...

  4. 第163天:js面向对象-对象创建方式总结

    面向对象-对象创建方式总结 1. 创建对象的方式,json方式 推荐使用的场合: 作为函数的参数,临时只用一次的场景.比如设置函数原型对象. 1 var obj = {}; 2 //对象有自己的 属性 ...

  5. JDK/Dubbo/Spring 三种 SPI 机制,谁更好?

    点击关注公众号,Java干货及时送达 来源:juejin.cn/post/6950266942875779108 SPI 全称为 Service Provider Interface,是一种服务发现机 ...

  6. JDK/Dubbo/Spring 三种 SPI 机制,谁更好呢?

    JDK/Dubbo/Spring 三种 SPI 机制,谁更好? SPI 全称为 Service Provider Interface,是一种服务发现机制.SPI 的本质是将接口实现类的全限定名配置在文 ...

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

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

  8. SPA优缺点、解决单页面应用的SEO困难问题以及三种网页渲染方式

    SPA特点优点缺点总结 1. 单页Web应用(SPA - Single Page web Application) 也就是说只有一个HTML文件的Web应用, 我们就称之为单页Web应用, 就称之为S ...

  9. 框架源码系列九:依赖注入DI、三种Bean配置方式的注册和实例化过程

    一.依赖注入DI 学习目标 1)搞清楚构造参数依赖注入的过程及类 2)搞清楚注解方式的属性依赖注入在哪里完成的. 学习思路 1)思考我们手写时是如何做的 2)读 spring 源码对比看它的实现 3) ...

最新文章

  1. 【Qt】dumpbin详解
  2. 教你设计一个超牛逼的本地缓存!
  3. ubuntu16.04 安装CAJViewer 以及 安装wine /deepin-wine 图标异常的解决
  4. 贝佐斯旗下媒体爆料:亚马逊因言废人,不管啥岗位,抗议就走人
  5. java enum 返回list_java – 组合枚举并使用getter返回指定的枚举
  6. 《编译原理》实验预习报告——基于YACC的TINY语法分析器的构建
  7. 极速pdf编辑器的水印如何去掉_如何修改PDF?有没有详细的PDF编辑器操作方法?...
  8. Mysql-my-innodb-heavy-4G.cnf配置文件注解
  9. 会真香吗?周某表示不会签约直播打工,想在老家种地
  10. 蛋糕matlab,用matlab绘制生日蛋糕
  11. css横向排列_CSS中伪元素和伪类的经典使用技巧
  12. 未解决:运行EtherCalc出错:Error: Cannot find module 'zappajs'
  13. php是什么电器元件,第三代计算机采用的主要电子元器件是什么
  14. 理解 Objective-c 属性
  15. 2022张宇考研基础30讲 第八讲 一元函数积分学的概念与计算
  16. 电工结业试卷_维修电工技师二级难吗考试内容怎么样
  17. cisco1841(cisco1841路由器设置步骤)
  18. java pdf添加图片_java pdf指定位置插入图片?
  19. 电路里的希腊字母读音
  20. kali破解wifi 密码(仅供学习)

热门文章

  1. http请求post,返回excel文件,并接收
  2. 怎么得到scrollTop
  3. 非常酷!10个基于 HTML5 的字体应用演示网站
  4. mongoose中的populate之多级填充,嵌套字段填充?
  5. vue笔记(一)基本使用、数据检测
  6. 经典MapReduce作业和Yarn上MapReduce作业运行机制
  7. 他人的一些2017年度总结
  8. 解决git clone报错SSL certificate problem
  9. 【转】phpize学习
  10. Linux中exit与_exit的区别