实现要求:
在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()); } }