- public class Student {
- private int id;
- private String name;
- public int getId() {
- return id;
- }
- public void setId(int id) {
- this.id = id;
- }
- public String getName() {
- return name;
- }
- public void setName(String name) {
- this.name = name;
- }
- }
- public class StuFactory implements FactoryBean, InitializingBean {
- public void afterPropertiesSet() throws Exception {
- System.out.println("student class initialized.");
- }
- public Object getObject() throws Exception {
- return new Student();
- }
- public Class getObjectType() {
- return Student.class;
- }
- public boolean isSingleton() {
- return true;
- }
- }
- <?xml version="1.0" encoding="UTF-8"?>
- <beans xmlns="http://www.springframework.org/schema/beans"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:lang="http://www.springframework.org/schema/lang"
- xsi:schemaLocation="
- http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
- http://www.springframework.org/schema/lang http://www.springframework.org/schema/lang/spring-lang-2.5.xsd">
- <bean id="stuFactory" class="com.alibaba.spring.StuFactory">
- </bean>
- </beans>
- public class StuFactoryTest {
- @Test
- public void test1() throws Throwable {
- ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
- Student stuFactory1 = (Student) context.getBean("stuFactory");
- Student stuFactory2 = (Student) context.getBean("stuFactory");
- System.out.println(stuFactory1 == stuFactory2);
- }
- }
- student class initialized.
- true
- public class FactoryBeanDemo implements FactoryBean {
- private String name;
- public void setName(String name) {
- this.name = name;
- }
- public Object getObject() throws Exception {
- if ("date".equals(name))
- return new Date();
- else
- return new String("这是一个字符串!");
- }
- public Class getObjectType() {
- return "date".equals(name) ? Date.class : String.class;
- }
- public boolean isSingleton() {
- return false;
- }
- }
- <bean name="myFactoryBean" class="com.alibaba.spring.FactoryBeanDemo" />
- <bean name="myFactoryBean1" class="com.alibaba.spring.FactoryBeanDemo">
- <property name="name" value="date"></property>
- </bean>
- Resource res = new ClassPathResource("applicationContext.xml");
- BeanFactory factory = new XmlBeanFactory(res);
- System.out.println(factory.getBean("myFactoryBean").getClass());
- System.out.println(factory.getBean("myFactoryBean1").getClass());
- System.out.println("=====================================");
- System.out.println(factory.getBean("&myFactoryBean").getClass());
- System.out.println(factory.getBean("&myFactoryBean1").getClass());
- class java.lang.String
- class java.util.Date
- =====================================
- class com.alibaba.spring.FactoryBeanDemo
- class com.alibaba.spring.FactoryBeanDemo
转自http://tianya23.blog.51cto.com/1081650/660273/