Spring bean实例化的方式

实例化过程如图,方式如图。
甩代码。
方式一:构造方法
搞一个bean,修改一下xml配置
package com.itheima.instance.constructor;
public class Bean1 {
	public Bean1(){
		System.out.println("bean1 实例化");
	}
}
<bean id = "bean1" class = "com.itheima.instance.constructor.Bean1"/>
方式二:静态工厂方法调用
package com.itheima.instance.static_factory;
public class MyBean2Factory {
	public MyBean2Factory(){
		System.out.println("bean2Factory 实例化中");
	}
	public static Bean2 createBean(){
		return new Bean2();
	}
}
package com.itheima.instance.static_factory;
public class Bean2 {
	public Bean2(){
		System.out.println("bean2 实例化");
	}
}
<bean id ="bean2" class = "com.itheima.instance.static_factory.MyBean2Factory"
factory-method = "createBean"></bean>
方式三:实例化工厂,调用工厂实例的方法
package com.itheima.instance.factory;
public class MyBean3Factory {
	public MyBean3Factory(){
		System.out.println("bean3工厂实例化中");
	}
	public Bean3 createBean(){
		return new Bean3();
	}
}
package com.itheima.instance.factory;
public class Bean3 {
	public Bean3(){
		System.out.println("bean3 实例化");
	}
}
<bean id = "myBean3Factory" class = "com.itheima.instance.factory.MyBean3Factory"/>
<bean id = "bean3" factory-bean = "myBean3Factory"
factory-method="createBean"/>
测试代码,这里只验收一下实例化是否成功,以及实例化是在什么步骤中做的:
import org.junit.Test;
import org.springframework.context.support.ClassPathXmlApplicationContext; public class InstanceTest3 {
@Test
public void testFactory(){
String xmlPath= "applicationContext.xml";
ClassPathXmlApplicationContext applicationContext=
new ClassPathXmlApplicationContext(xmlPath);
}
}
测试代码运行结果:
17:11:20.371 [main] DEBUG org.springframework.context.support.ClassPathXmlApplicationContext - Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@737996a0
17:11:20.535 [main] DEBUG org.springframework.beans.factory.xml.XmlBeanDefinitionReader - Loaded 6 bean definitions from class path resource [applicationContext.xml]
17:11:20.581 [main] DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory - Creating shared instance of singleton bean 'userDao'
17:11:20.597 [main] DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory - Creating shared instance of singleton bean 'userService'
17:11:20.628 [main] DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory - Creating shared instance of singleton bean 'bean1'
bean1 实例化
17:11:20.628 [main] DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory - Creating shared instance of singleton bean 'bean2'
bean2 实例化
17:11:20.631 [main] DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory - Creating shared instance of singleton bean 'myBean3Factory'
bean3工厂实例化中
17:11:20.631 [main] DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory - Creating shared instance of singleton bean 'bean3'
bean3 实例化
Spring bean实例化的方式的更多相关文章
- Spring Bean 的装配方式
		Spring Bean 的装配方式 装配 Bean 的三种方式 一个程序中,许多功能模块都是由多个为了实现相同业务而相互协作的组件构成的.而代码之间的相互联系又势必会带来耦合.耦合是个具有两面性的概念 ... 
- Spring———bean的创建方式,注入方式,复杂类型注入  概括
		Spring相关概念和类 1.IOC inverse of control 控制反转 反转了创建对象的方式 以前:new 对象,管理和维护 ... 
- spring bean实例化方式
		注意:xml配置中bean节点下scope属性默认值为singleton(单例),在需要多例的情况下需要配置成prototype spring提供三种实例化方式:默认构造.静态工厂.实例工厂 一.默认 ... 
- spring bean实例化的三种方式
		一.使用类的无参构造创建 配置文件 java代码 注意若类里面没有无参的构造,则会出现异常 二.使用静态工厂创建 配置文件 java代码 Factory类 测试类 结果 三.使用实例工厂 配置文件 1 ... 
- springmvc学习指南 之---第25篇 Spring Bean有三种配置方式
		writed by不要张艳涛, 从tomcat转到了springmvc 现在开始有点不知道该看什么书了,看完了springmvc 学习指南之后 又查了一些书,好多都是内容相近,在找书的过程之中,发现s ... 
- Spring框架(2)---IOC装配Bean(xml配置方式)
		IOC装配Bean (1)Spring框架Bean实例化的方式提供了三种方式实例化Bean 构造方法实例化(默认无参数,用的最多) 静态工厂实例化 实例工厂实例化 下面先写这三种方法的applicat ... 
- spring Bean的三种配置方式
		Spring Bean有三种配置方式: 传统的XML配置方式 基于注解的配置 基于类的Java Config 添加spring的maven repository <dependency> ... 
- IOC装配Bean(XML方式)
		Spring框架Bean实例化的方式 提供了三种方式实例化Bean 构造方法实例化(默认无参数,用的最多) 静态工厂实例化 实例工厂实例化 无参数构造方法的实例化 <!-- 默认情况下使用的就是 ... 
- Spring - Bean的概念及其基础配置
		概述 bean说白了就是一个普通的java类的实例,我们在bean中写一些我们的业务逻辑,这些实例由Sping IoC容器管理着.在web工程中的spring配置文件中,我们用<bean/> ... 
随机推荐
- 20190421-那些年使用过的CSS预处理器(CSS Preprocessor)之Sass and Less
			写在前面乱七八糟的前言: emmm,还是决定把Sass与Less单独出来写成一篇,可能会稍微好辣么一丢丢?TAT语法特性是真的香,通篇下来能吸收个10%自我感觉已经很nice了,毕竟渣渣的我有渣渣的自 ... 
- phpstorm 代码注释后,撤销某段代码的注释的,快捷键是什么?
			phpstorm 的代码注释有两种风格,一种是双斜杠,另一种是 /* ... */风格,两者的快捷键都是开关式(即按第一次为注释,再按一次为撤销注释),快捷键如下: 1.双斜杠注释 Ctrl + ... 
- Android为TV端助力之Webview与JS双向交互
			package com.hhzt.iptv.adservice; import android.app.Activity;import android.graphics.Bitmap;import a ... 
- (最完美)MIUI12系统的Usb调试模式在哪里开启的步骤
			当我们使用安卓手机通过数据线链接到Pc的时候,或者使用的有些app比如我们公司营销小组当使用的app引号精灵,之前的老版本就需要开启usb调试模式下使用,现当新版本不需要了,如果手机没有开启usb调试 ... 
- extjs 倒计时
			var interval = (new Date(selection[0].data.dealLimitTime).getTime() - new Date().getTime()) / 1000; ... 
- anaconda的scikit-learn报错It seems that scikit-learn has not been built
			我们在导入sklearn时往往会报错. import sklearn Traceback (most recent call last): File "<stdin>" ... 
- mysql8.0.主从复制搭建
			搭建主从数据库 一.准备两台以上对的数据库 数据库1(主服务器):192.168.2.2 数据库2(从服务器):192.168.2.4 1.1 配置主服务器 .在 /et ... 
- RocketMQ4.3.X关于设置useEpollNativeSelector = true报错问题
			前一阵子刚整理完RocketMQ4.3.x版本的相关配置的工作,接下来就来测试一下改变参数会带来什么好的结果 首先我就选中了useEpollNativeSelector 这个参数 默认这个参数是 fa ... 
- H5活动页开发有关
			活动页开发流程 针对各种节日各种活动,临时定稿开发的活动页,往往时间安排都比较急 ---- 产品定下需求方向 UI实现设计稿 1. 草图和交互逻辑定稿=>多少个页面,每个页面表达的含义以及和用户 ... 
- 64位ubuntu安装交叉编译工具链,显示找不到命令
			是因为Ubuntu64位版本已不支持ia32-libs的软件包,而是使用了lib32ncurses5.lib32z1软件包做为替代, 所以在Ubuntu16.04版本当中应该安装执行: sudo ap ... 
