首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

Spring中创办bean的三种方法

2013-02-15 
Spring中创建bean的三种方法1 construction注入也就是直接调用这个类的构造器,并把参数传进去。1.public in

Spring中创建bean的三种方法
1 construction注入

也就是直接调用这个类的构造器,并把参数传进去。

1.   public interface IMusicBox {  

2.        public void play();  

3.   }  



3.1 静态工厂方法

工厂类: 

Java代码  

1.   public class MusicBoxFactory {  

2.       public static IMusicBox createMusicBox(){  

3.       return new IMusicBox(){  

4.                 public void play(){  

5.           System.out.println("Play piano...");  

6.            }  

7.       };  

8.       }  

9.   }  


配置文件: 

Xml代码  

1.   <bean id="musicBox" class="test.spring.MusicBoxFactory" factory-method="createMusicBox" />  


测试类: 

Java代码  

1.   public static void main(String[] args) {  

2.       ApplicationContext  ctx =   

3.       new ClassPathXmlApplicationContext("bean-config.xml");  

4.       IMusicBox musicbox = (IMusicBox)ctx.getBean("musicBox");  

5.       musicbox.play();  

6.   }  

3.2工厂实例方法

工厂类: 

Java代码  

1.   public class MusicBoxFactory {  

2.       public IMusicBox createMusicBox(){//没有static修饰  

3.       return new IMusicBox(){  

4.                 public void play(){  

5.           System.out.println("Play piano...");  

6.            }  

7.       };  

8.       }  

9.   }  



配置文件: 

Xml代码  

1.   <bean id="factoryBean"  class="test.spring.MusicBoxFactory" />  

2.   <bean id="musicBox" factory-bean="factoryBean" factory-method="createMusicBox" />  


“factory-bean”属性指定工厂Bean,”factory-method”属性指定工厂方法来取得Bean实例。 

测试类: 

Java代码  

1.   public static void main(String[] args) {  

2.       ApplicationContext  ctx =   

3.       new ClassPathXmlApplicationContext("bean-config.xml");  

4.       IMusicBox musicbox = (IMusicBox)ctx.getBean("musicBox");  

5.       musicbox.play();  

6.   }  

3.3工厂类实现FacotryBean接口 

工厂类: 

Java代码  

1.   import org.springframework.beans.factory.FactoryBean;  

2.     

3.   public class MusicBoxFactory2 implements FactoryBean {  

4.       public Object getObject() throws Exception {  

5.       return new IMusicBox(){  

6.           public void play(){  

7.                System.out.println("Play piano...");  

8.                 }  

9.       };  

10.      }  

11.    

12.      public Class getObjectType() {  

13.      return IMusicBox.class;  

14.      }  

15.    

16.      public boolean isSingleton() {  

17.      return false;  

18.      }  

19.  }  



配置文件: 

Xml代码  

1.   <bean id="musicBox" class="test.spring.MusicBoxFactory2"/>  



测试类: 

Java代码  

1.   public static void main(String[] args) {  

2.       ApplicationContext  ctx =   

3.       new ClassPathXmlApplicationContext("bean-config.xml");  

4.       //不加 & 返回工厂的“产品”  

5.       IMusicBox musicbox = (IMusicBox)ctx.getBean("musicBox");  

6.       musicbox.play();  

7.       //加 & 返回工厂类实例  

8.       Object obj = ctx.getBean("&musicBox");    

9.       System.out.println(obj.getClass().getName());   

10.    

11.  }  

实现FactoryBean接口的类不会被视为普通的Bean,Spring会自动检测,调用getObject方法获取Bean实例

热点排行