我的spring学习笔记9-Spring使用工厂方法实例化Bean的注意点

方法一:

    <bean id="musicBox" class="onlyfun.caterpillar.factory.MusicBoxFactory" 
    factory-method="createMusicBoxStatic"></bean>
    

    方法二:
    <bean id="musicBoxFctory" class="onlyfun.caterpillar.factory.MusicBoxFactory"></bean>   
    <bean id="myMusicBox" factory-bean="musicBoxFctory" factory-method="createMusicBox"></bean>
   


    正确设置:

import onlyfun.caterpillar.factory.IMusicBox;
public class MusicBoxFactory {

    public IMusicBox createMusicBox() {
        return new IMusicBox(){
           public void play() {
               System.out.println("播放钢琴音乐...");
            }
        };
    }


    public static IMusicBox createMusicBoxStatic() {
        return new IMusicBox(){
            public void play() {
                System.out.println("播放钢琴音乐...");
            }
        };
    }
}

——————————————————————————————

注意点:

方法一要求factory-method必须是静态函数。

第一个可以理解为,调用工厂类的类方法(静态方法)

方法二要求factory-method必须不是静态函数。

第二个可以理解为,调用工厂类实例的工厂方法,要求不能是静态的。

你可能感兴趣的