雷神Spring实验5~9

该博客参考雷神的印象笔记,用来巩固复习
====================工厂方式创建bean==========

实验6:通过继承实现bean配置信息的重用(测试)
实验7:通过abstract属性创建一个模板bean
实验8:bean之间的依赖
实验9:测试bean的作用域,分别创建单实例和多实例的bean★(测试)
实验5:配置通过静态工厂方法创建的bean、实例工厂方法创建的bean、(FactoryBean测试)★实验6:

实验6:通过继承实现bean配置信息的重用(测试)
<bean id="person05" class="com.atguigu.bean.Person" >
		<property name="lastName" value="张三"></property>
		<property name="age" value="18"></property>
		<property name="gender" value="男"></property>
		<property name="email" value="zhangsan@atguigu.com"></property>
	</bean>
	
	<!--parent:指定当前bean的配置信息继承于哪个 但不是真正的父子类 -->
	<!--需要改变的就写在<property></property>里面,不需要改变就直接拿person05-->
	<bean id="person06" class="com.atguigu.bean.Person" parent="person05">
		<property name="lastName" value="李四"></property>
	</bean>

实验7:通过abstract属性创建一个模板bean

   <!-- abstract="true":这个bean的配置是一个抽象的,不能获取他的实例,只能被别人用来继承 -->
   <bean id="person05" class="com.atguigu.bean.Person" abstract="true">
		<property name="lastName" value="张三"></property>
		<property name="age" value="18"></property>
		<property name="gender" value="男"></property>
		<property name="email" value="zhangsan@atguigu.com"></property>
	</bean>
	
	<!--parent:指定当前bean的配置信息继承于哪个 但不是真正的父子类 -->
	<!--需要改变的就写在<property></property>里面,不需要改变就直接拿person05-->
	<bean id="person06" class="com.atguigu.bean.Person" parent="person05">
		<property name="lastName" value="李四"></property>
	</bean>
实验8:bean之间的依赖
    <!-- 原来是按照配置的顺序-就是👇写的顺序,创建bean -->
	<!--实验8:bean之间的依赖(只是改变创建顺序)改变bean的创建顺序 depends-on  -->
	<bean id="car" class="com.atguigu.bean.Car" depends-on="person,book"></bean>
	<bean id="person" class="com.atguigu.bean.Person"></bean>
	<bean id="book" class="com.atguigu.bean.Book"></bean>
实验9:测试bean的作用域,分别创建单实例和多实例的bean
   <!-- 实验9:测试bean的作用域,分别创建单实例和多实例的bean★
	bean的作用域:指定bean是否单实例,xxx;默认:单实例的
	
	prototype:多实例的;
		1)、容器启动默认不会去创建多实例bean
		2)、获取的时候创建这个bean
		3)、每次获取都会创建一个新的对象
	singleton:单实例的;默认的;
		1)、在容器启动完成之前就已经创建好对象,保存在容器中了。
		2)、任何获取都是获取之前创建好的那个对象;
	
	request:在web环境下,同一次请求创建一个Bean实例(没用)
	session:在web环境下,同一次会话创建一个Bean实例(没用)
	 -->
	<bean id="book" class="com.atguigu.bean.Book" scope="prototype"></bean>
	
实验5:配置通过静态工厂方法创建的bean、实例工厂方法创建的bean、(FactoryBean测试)★
    <!--实验5:配置通过静态工厂方法创建的bean、实例工厂方法创建的bean、FactoryBean★  -->
	<!-- bean的创建默认就是框架利用反射new出来的bean实例 -->
	<!-- 工厂模式;工厂帮我们创建对象;有一个专门帮我们创建对象的类,这个类就是工厂
		AirPlane ap = AirPlaneFactory.getAirPlane(String jzName);
		
		静态工厂:工厂本身不用创建对象;通过静态方法调用,对象 = 工厂类.工厂方法名();
		        AirPlaneStaticFactory.getAirPlane()
		实例工厂:工厂本身需要创建对象;
				工厂类 工厂对象 = new 工厂类();
				工厂对象.getAirPlane("张三");
				new AirPlaneInstanceFactory().getAirPlane()
	 -->
	
	<!-- 1、静态工厂(不需要创建工厂本身)factory-method="getAirPlane":
		指定哪个方法是工厂方法
		class:指定静态工厂全类名
		factory-method:指定工厂方法
		constructor-arg:可以为方法传参
	 -->
    <!--2、实例工厂使用 
		factory-method;指定这个实例工厂中哪个方法是工厂方法;	
	 -->

    <!--------------------- -->


    <!-- 1、静态工厂 -->
    <bean id="airPlane01" class="com.atguigu.factory.AirPlaneStaticFactory"
		factory-method="getAirPlane">
		<!-- 可以为方法指定参数 -->
		<constructor-arg value="李四"></constructor-arg>
	</bean>

   <!--2、实例工厂使用 -->
   <bean id="airPlaneInstanceFactory" 
		class="com.atguigu.factory.AirPlaneInstanceFactory"></bean>
   <bean id="airPlane02" class="com.atguigu.bean.AirPlane"
		factory-bean="airPlaneInstanceFactory" 
		factory-method="getAirPlane">
		<constructor-arg value="王五"></constructor-arg>
	</bean>
<!-- FactoryBean★(是Spring规定的一个接口);
			只要是这个接口的实现类,Spring都认为是一个工厂;
			创建了MyFactoryBeanImple.java(实现FactoryBean接口类是Spring可以认识的工厂类,
			Spring会自动调用工厂方法创建实例 工厂方法:getObject()、getObjectType()返回创建对象类型、isSingleton()是否是单例
			Spring如何知道调用这个工厂创建book对象? 1、编写一个 FactoryBean的实现类 2、在Spring配置文件中注册)
		1、ioc容器启动的时候不会创建实例 
		2、FactoryBean;获取的时候的才创建对象
		-->
	<bean id="myFactoryBeanImple" 
		class="com.atguigu.factory.MyFactoryBeanImple"></bean>
</beans>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值