Spring三种对象创建方式
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三种对象创建方式相关推荐
- spring配置详解-三种对象创建方式_
新建一个包,b_create,关于Spring创建对象的方式,咱们首先先介绍默认方式,我复制一个配置文件过来,在这个包下创建一个配置文件,把这些注释可以删掉了,现在咱们看到的情况,是常见的情况,这种情 ...
- Spring学习(二)—— 对象创建方式及依赖注入
文章目录 对象创建方式 配置 依赖注入 构造器注入 Set方式注入 拓展方式注入 对象创建方式 默认使用无参构造器创建 当我们需要使用有参构造器时,有以下几种方式: 1.下标赋值 <!--第一种 ...
- javascript一种新的对象创建方式-Object.create()
1.Object.create() 是什么? Object.create(proto [, propertiesObject ]) 是E5中提出的一种新的对象创建方式,第一个参数是要继承的原型,如果不 ...
- 第163天:js面向对象-对象创建方式总结
面向对象-对象创建方式总结 1. 创建对象的方式,json方式 推荐使用的场合: 作为函数的参数,临时只用一次的场景.比如设置函数原型对象. 1 var obj = {}; 2 //对象有自己的 属性 ...
- JDK/Dubbo/Spring 三种 SPI 机制,谁更好?
点击关注公众号,Java干货及时送达 来源:juejin.cn/post/6950266942875779108 SPI 全称为 Service Provider Interface,是一种服务发现机 ...
- JDK/Dubbo/Spring 三种 SPI 机制,谁更好呢?
JDK/Dubbo/Spring 三种 SPI 机制,谁更好? SPI 全称为 Service Provider Interface,是一种服务发现机制.SPI 的本质是将接口实现类的全限定名配置在文 ...
- asp.net session 介绍一三种Session存储方式
asp.net session 介绍一三种Session存储方式 www.firnow.com 时间:2009-03-04 作者:匿名 编辑:sky 点击: 1478 [评论] 对于asp.net的程 ...
- SPA优缺点、解决单页面应用的SEO困难问题以及三种网页渲染方式
SPA特点优点缺点总结 1. 单页Web应用(SPA - Single Page web Application) 也就是说只有一个HTML文件的Web应用, 我们就称之为单页Web应用, 就称之为S ...
- 框架源码系列九:依赖注入DI、三种Bean配置方式的注册和实例化过程
一.依赖注入DI 学习目标 1)搞清楚构造参数依赖注入的过程及类 2)搞清楚注解方式的属性依赖注入在哪里完成的. 学习思路 1)思考我们手写时是如何做的 2)读 spring 源码对比看它的实现 3) ...
最新文章
- 【Qt】dumpbin详解
- 教你设计一个超牛逼的本地缓存!
- ubuntu16.04 安装CAJViewer 以及 安装wine /deepin-wine 图标异常的解决
- 贝佐斯旗下媒体爆料:亚马逊因言废人,不管啥岗位,抗议就走人
- java enum 返回list_java – 组合枚举并使用getter返回指定的枚举
- 《编译原理》实验预习报告——基于YACC的TINY语法分析器的构建
- 极速pdf编辑器的水印如何去掉_如何修改PDF?有没有详细的PDF编辑器操作方法?...
- Mysql-my-innodb-heavy-4G.cnf配置文件注解
- 会真香吗?周某表示不会签约直播打工,想在老家种地
- 蛋糕matlab,用matlab绘制生日蛋糕
- css横向排列_CSS中伪元素和伪类的经典使用技巧
- 未解决:运行EtherCalc出错:Error: Cannot find module 'zappajs'
- php是什么电器元件,第三代计算机采用的主要电子元器件是什么
- 理解 Objective-c 属性
- 2022张宇考研基础30讲 第八讲 一元函数积分学的概念与计算
- 电工结业试卷_维修电工技师二级难吗考试内容怎么样
- cisco1841(cisco1841路由器设置步骤)
- java pdf添加图片_java pdf指定位置插入图片?
- 电路里的希腊字母读音
- kali破解wifi 密码(仅供学习)