Bean实例化的三种方式
一.实例化的三种方式
1.使用无参构造方法实例化(最常用)
xml配置
<bean id="userDao" class="dao.impl.UserDaoImpl"/>
id为要实例化的对象它是Bean实例在Spring容器中的唯一标识
class 是要实例化的类的全类名
它会根据默认无参构造方法来创建类对象
如果bean中没有默认无参构造函数,将会创建失败
测试类
public void test() {ApplicationContext app=new ClassPathXmlApplicationContext("applicationContext.xml");USerDao userDao = (USerDao) app.getBean("userDao");userDao.save(); //通过得到的对象调用方法}
2.工厂静态方法实例化
public class StaticFactoryBean {public static UserDao createUserDao(){ return new UserDaoImpl();}
}
静态方法可以直接使用类名进行调用,所以StaticFactoryBean类不需要进行实例化
xml 配置
class静态工厂的全类名,factory-method静态工厂的方法<bean id="userDao" class="factory.StaticFactoryBean" factory-method="createUserDao" />
3.工厂实例方法实例化
public class DynamicFactoryBean { public UserDao createUserDao(){ return new UserDaoImpl(); }
}
该类中的方法为非静态,所以必须先实例化类才能调用方法
xml配置
<bean id="factoryBean" class="factory.DynamicFactoryBean"/>factory-bean工厂的实例化对象,factory-method实例工厂的方法<bean id="userDao" factory-bean="factoryBean" factory-method="createUserDao"/>
二.scope标签及对比
取值 | 说明 |
---|---|
singleton | 默认值,单例的 |
prototype | 多例的 |
request | Spring创建一个Bean的对象,并将对象存入到request域中 |
session | Spring创建一个Bean的对象,并将对象存入到session域中 |
global session | 应用在Portlet环境,如果没有Portlet环境那么globalSession就相当于session |
常用的两种取值对比
1)当scope的取值为singleton时
Bean的实例化个数:1个
Bean的实例化时机:当Spring核心文件被加载时,实例化配置的Bean实例
对象创建:当应用加载,创建容器时,对象就被创建了
对象运行:只要容器在,对象一直活着,存在于容器中
对象销毁:当应用卸载,销毁容器时,对象就被销毁了
2)当scope的取值为prototype时
Bean的实例化个数:多个
Bean的实例化时机:当调用getBean()方法时实例化Bean
对象创建:当使用对象时,创建新的对象实例
对象运行:只要对象在使用中,就一直活着,存在于内存中
对象销毁:当对象长时间不用时,被 Java 的垃圾回收器回收了
Bean实例化的三种方式相关推荐
- Spring配置文件-Bean实例化的三种方式
1.无参构造方法实例化(详见我的博客) 2.工厂静态方法实例化 创建StaticFactory类 public class StaticFactory {public static UserDao g ...
- Spring中bean实例化的三种方式:默认构造、静态工厂、实例工厂
1. 默认构造方式:必须提供默认构造 <bean id="bean id" class="工厂全限定类名"></bean> 以Studn ...
- @Import-给容器中加载bean的第三种方式
给容器中注册组件: 1)包扫描+组件标注注解(@Controller/@Service/@Repository/@Component) 2)@Bean[导入的第三方包里面的组件] 3)@Import[ ...
- Spring创建Bean的三种方式的使用和区别
在学习Spring的时候,发现Spring的IOC(控制反转)为我们提供的三种创建Bean的方式. 1.Spring创建Bean的三种方式 这里采用XML配置,分别演示三种创建Bean的方式和代码. ...
- 05.bean依赖注入的三种方式
05.bean依赖注入的三种方式 1.概述 依赖注入 DI(Dependency Injection):它是 Spring 框架核心 IOC 的具体实现. 在编写程序时,通过控制反转,把对象的创建交给 ...
- SpringBoot静态获取 bean的三种方式,你学会了吗?
欢迎关注方志朋的博客,回复"666"获面试宝典 来源:blog.csdn.net/showchi/article/details/97005720 注意:调用者要被spring管理 ...
- java bean 工厂模式_Spring框架通过工厂创建Bean的三种方式实现
工厂模式 Spring中bean的创建,默认是框架利用反射new出来的bean实例.有时候也会有一些复杂的情况. 假设有一个飞机,属性如下,现在需要造很多同型号的飞机,那么唯一需要改变的属性只有Dri ...
- 把对象的创建交给spring来管理—— 1.创建bean的三种方式 2.bean对象的作用范围 3.bean对象的生命周期
把对象的创建交给spring来管理 spring对bean的管理细节 1.创建bean的三种方式 2.bean对象的作用范围 3.bean对象的生命周期 创建Bean的三种方式 ...
- 五、创建Bean的三种方式
五.创建Bean的三种方式 转载于:https://www.cnblogs.com/ljiwej/p/7280614.html
最新文章
- 弯道极限超车、击败人类顶级玩家,索尼AI赛车手登上Nature封面
- Struts2 异常处理
- 招银网络笔试java_2020招银网络科技校园招聘常见问题
- 10012 - How Big Is It?
- 一次远程支持事故的教训,与大家分享
- There is no getter for property named ‘col‘ in ‘class String‘,不是说一个参数不需要@Param注解吗?#{}和${}的区别
- wxWidgets:测试样品
- java中qq中拉伸的文件,delphi中如何实现QQ中的截图并实现拉伸放大移动的功能
- PHP,Mysql-根据一个给定经纬度的点,进行附近地点查询–合理利用算法,效率提高2125倍...
- 为什么互联网公司天天都在招人?
- Python学习手册(第4版).pdf
- 程序员那些必须掌握的排序算法(上)
- 网络高清监控摄像头如何安装(图文方法+模拟像机)
- CSDN 第六期编程竞赛做题记录
- js根据生日输出对应的生肖和星座
- centos 7.3 iscsi登录失败问题及解决方法
- Mysql Nested-Loop Join算法和MRR
- Linux 静态IP,动态IP配置
- [element]element-ui框架下载
- Android Intent之传递带有对象的集合(Serializable传递对象和对象集合)