Spring中的Bean 实例化

  1. 什么是Bean
    Spring就是一个大工厂,Bean就是Spring容器中需要加工生产的部分。

我们都在微博上@过某某,对方会优先看到这条信息,并给你反馈,那么在Spring中,你标识一个@符号,那么Spring就会来看看,并且从这里拿到一个Bean(注册)或者给出一个Bean(使用)

  1. Bean的实例化
    想要用这个对象,就先要实例化这个对象。想要用Spring容器中的Bean,就要先实例化这个Bean。
    实例化Bean有三种方法,构造器实例化,静态工厂方式实例化,实例工厂实例化。
  2. 构造器实例化
    创建一个类bean1,并在配置文件(xml)中定义这个Bean。
    创建测试类InstanceTest,在此类下测试构造早期是否能实例化Bean。
public class InstanceTest1 {
	public static void main(String[] args) {
		String xmlPath = "com/woongcha/instance/constructer/beans1.xml";
		//ApplicationContext在加载配置文件时,对Bean进行实例化
		ApplicationContext applicationContext =
				new ClassPathXmlApplicationContext(xmlPath);
		Bean1 bean=(Bean1) applicationContext.getBean("bean1");
		System.out.println(bean);
	}
}

测试类中先加载配置文件时,对Bean进行实例化。Spring会通过id为bean1的类中默认的无参构造方法进行实例化。

  1. 静态工厂方式实例化
    与构造器实例化不同的是,构造工厂方式实例化在配置时class属性时,不再是Bean的实现类,而是静态工厂类,还需要factory-method属性来指定所创建的静态工厂方法。
<bean id="bean2" 
			class="com.woongcha.instance.static_factory.MyBean2Factory"
			factory-method="createBean">
	</bean>
public class InstanceTest2 {
	public static void main(String[] args) {
		String xmlPath = "com/woongcha/instance/static_factory/beans2.xml";
		//ApplicationContext在加载配置文件时,对Bean进行实例化
		ApplicationContext applicationContext =
				new ClassPathXmlApplicationContext(xmlPath);
		System.out.println(applicationContext.getBean("bean2"));
	}
}
  1. 实例工厂方式实例化
    不再采用静态方法创建Bean实例,而是采用直接创建Bean实例的方式。还需要factory-bean属性来确定使用工厂中的哪个方法。
	<bean id="myBean3Factory" 
			class="com.woongcha.instance.static_factory.MyBean3Factory">
	</bean>
	<bean id="bean3" factory-bean="myBean3Factory"
			factory-method="createBean">
	</bean>
</beans>

public class InstanceTest3 {
		public static void main(String[] args) {
			String xmlPath = "com/woongcha/instance/static_factory/beans3.xml";
			//ApplicationContext在加载配置文件时,对Bean进行实例化
			ApplicationContext applicationContext =
					new ClassPathXmlApplicationContext(xmlPath);
			System.out.println(applicationContext.getBean("bean3"));
		}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值