sping练习,在Eclipse搭建的Spring开发环境中,使用工厂方式创建Bean对象,将创建的Bean对象输出到控制台。

相关 知识 >>>

相关 练习 >>>

 

实现要求:

在Eclipse搭建的Spring开发环境中,使用工厂方式创建Bean对象,将创建的Bean对象输出到控制台。要求如下:

  • 使用静态工厂创建Bean对象。
  • 使用动态工厂创建Bean对象。

实现思路:

在com.mhys.bean包下,创建Card类。

package com.mhys.bean;

public class Card {
	private String cardNo;

	public String getCardNo() {
		return cardNo;
	}

	public void setCardNo(String cardNo) {
		this.cardNo = cardNo;
	}
	
}

在com.mhys.bean包下,创建CardFactory工厂类,声明getInstance()方法。

package com.mhys.bean;

public class CardFactory {
	public Card getInstance(){
		System.out.println("使用动态方法创建Card实例");
		return new Card();
	}
}

在applicationContext.xml配置文件中,注册工厂类到容器。

    <!-- 动态工厂 -->
	<bean id="cardFactory" class="com.mhys.bean.CardFactory"></bean>
	<bean id="card" factory-bean="cardFactory" factory-method="getInstance"></bean>

在com.mhys.bean包下,创建Customer类、CustomerFactory工厂类。

package com.mhys.bean;

public class Customer {
	private String name;
	private Card card;
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public Card getCard() {
		return card;
	}
	public void setCard(Card card) {
		this.card = card;
	}
	
	
}
package com.mhys.bean;

public class CustomerFactory {
	public static Customer getInstance() {
		System.out.println("创建静态工厂方式创建Customer示例");
		return new Customer();
	}
}

在applicationContext.xml中注册工厂类到容器。

	<!-- 静态工厂 -->
	<bean id="customer" class="com.mhys.bean.CustomerFactory" factory-method="getInstance">
		<property name="name" value="王X"></property>
		<property name="card" ref="card"></property>
	</bean>

在com.mhys.test包下创建测试类完成测试。

package com.mhys.test;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.mhys.bean.Customer;

public class T1_2_3Test {

	public static void main(String[] args) {
		// 获取上下文
		ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
		Customer customer = (Customer)context.getBean("customer");
		System.out.println(customer.getName()+"___________"+customer.getCard());

	}

}

posted @ 2021-05-13 00:12  明金同学  阅读(31)  评论(0编辑  收藏  举报