Spring中的Bean(一)

目录

1. Bean的配置

 2. Bean的实例化

2.1 构造器实例化

        示例

2.2 静态工厂方式实例化

   示例

2.3 实例工厂方式实例化 

 示例


1. Bean的配置

        Bean的本质就是Java中的类,spring中的Bean其实就是对实体类的引用,用来生产Java类对象,从而实现生产和管理Bean。如果把spring看作一个大型工厂,spring容器中的Bean就是工厂中的产品。使用这个工厂生产和管理Bean,就需要在配置文件中告诉它需要哪些Bean,以及需要使用何种方式将这些Bean装配到一起。

spring容器支持两种格式的配置文件:

  • Properties文件
  • XML文件(最常用)

        XML配置文件的根元素是<bean>,<bean>中包含了多个<bean>子元素,每一个<bean>子元素定义了一个Bean,并描述了该Bean如何被装配到spring容器中。

关于<beans>元素的常用属性
属性或子元素名称描述
id是一个Bean的唯一标识符,spring容器对Bean的配置、管理都通过该属性来完成。
namespring容器同样可以通过此属性对容器中的Bean进行配置和管理,name属性中可以为Bean指定多个名称,每个名称之间用逗号","或分号";"隔开。

class

该属性制定了Bean的具体实现类,它必须是一个完整的类名,使用类的全限定名。
scope用来设定Bean实例的作用域,其属性值有:singleton(单例)、prototype(原型)、request、session、global Session、application和websocket。默认值为singleton
…………

 2. Bean的实例化

        在面向对象的程序中,想要使用某个对象,就需要先实例化这个对象。同样在spring中,要想使用容器中的Bean,也需要实例化Bean。实例化Bean有三种方式,分别为构造器实例化静态工厂方式实例化实例工厂方式实例化;其中最常用的是构造器实例化。

2.1 构造器实例化

        构造器实例化是指spring容器通过Bean对应的类中默认的构造函数来实例化Bean。

        示例

  • 在eclipse中,创建一个名为chapter02的Web项目,将Spring的4个基础包以及commons-logging的jar包复制到lib目录中,并发布到类路径下;(改变默认环境为1.8,保存配置环境方便使用)
  • 创建类名为Bean1的Java类,包名为com.itheima.instance.contructor;
  • 创建spring配置文件beans1.xml,并配置Bean1实体类Bean;
<bean id="bean1" class="com.itheima.instance.contructor.Bean1"></bean>
  • 编写测试类InstranceTest1,测试程序;
public class InstanceTest1 {
	private static BeanFactory applicationConetxt;

	public static void main(String[] args) {
		//定义配置文件路径
		String xmlPath="com/itheima/instance/contructor/beans1.xml";
		//ApplicationContext在加载配置文件是,对Bean进行实例化
		ApplicationContext applicationContext=new ClassPathXmlApplicationContext(xmlPath);
		Bean1 bean=(Bean1) applicationContext.getBean("bean1");
		//输出为对象的地址
		System.out.println(bean);
	}
}

2.2 静态工厂方式实例化

        静态工厂是实例化Bean的另一种方式。该方式要求自己创建一个静态工厂的方法来创建Eban实例。

   示例

  • 创建类名为Bean2的Java类,包名为com.itheima.instance.static_factory;
  • 创建一个Java工厂类,在类中使用静态方法获取Bean2实例;
public class MyBean2Factory {
	//工厂中要有静态方法
	public static Bean2 createBean() {
		return new Bean2();
	}
}
  • 创建spring配置文件beans2.xml,并配置工厂类Bean;
 <bean id="bean2" class="com.itheima.instance.static_factory.MyBean2Factory" factory-method="createBean"/>
  • 编写测试类,测试程序;
public class InstanceTest2 {
	public static void main(String[] args) {
		//定义配置文件路径
		String xmlPath="com/itheima/instance/static_factory/beans2.xml";
		//ApplicationContext在加载配置文件,对Bean进行实例化
		ApplicationContext applicationContext=new ClassPathXmlApplicationContext(xmlPath);
		
//获取到的是Bean2的实例	
System.out.println(applicationContext.getBean("bean2"));
	}
}

2.3 实例工厂方式实例化 

        实例工厂是采用直接创建Bean实例的放是,在配置文件中,通过factory-bean属性配置一个实例工厂,然后使用factory-method属性确定使用工厂中的哪个方法。

 示例

  • 创建类名为Bean3的Java类,包名为com.itheima.instance.factory;
  • 创建一个Java工厂类,在类中使用非静态方法获取Bean3实例;
public class MyBean3Factory {
	
	public MyBean3Factory(){
		System.out.println("bean3工厂实例化中");
	}
	
	public Bean3 createBean() {
		return new Bean3();
	}
}
  • 创建spring配置文件beans3.xml,并配置工厂类Bean
 <!-- 配置工厂 -->
<bean id="myBean3Factory" class="com.itheima.instance.factory.MyBean3Factory"/>
        
<!-- 使用factory-bean属性指向配置的实例工厂 ,使用factory-method属性确定使用工厂中的哪个方法-->
<bean id="bean3" factory-bean="myBean2Faactory" factory-method="createBean"></bean>
  • 编写测试类,测试程序;
public class InstanceTest3 {
	public static void main(String[] args) {
		//指定配置文件路径
		String xmlPath="com/itheima/instance/factory/beans3.xml";
		//ApplicationContext在加载配置文件时,对Bean进行实例化
		ApplicationContext applicationContext=new ClassPathXmlApplicationContext(xmlPath);
		System.out.println(applicationContext.getBean("bean3"));
	}
}

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值