美文网首页
Spring-4静态工厂方法和动态工程方法配置bean

Spring-4静态工厂方法和动态工程方法配置bean

作者: RyanHugo | 来源:发表于2020-03-12 20:00 被阅读0次

    静态工厂方法

    <!-- 静态工厂方法直接调用一个类的静态方法可以返回bean
        class指向静态工厂方法的类
        factory-method:指向静态工厂方法的
        constructor-arg:传入静态工厂方法的参数-->
        
        <bean id = "car1" class = "cycle.StaticFactory" factory-method="getCar">
            <constructor-arg value="audi"></constructor-arg>
        </bean>
    
    import java.util.HashMap;
    import java.util.Map;
    
    import org.springframework.context.ApplicationContext;
    import org.springframework.context.support.ClassPathXmlApplicationContext;
    
    public class StaticFactory {
    
        private static Map<String, Car> cars = new HashMap<String, Car>();
        static{
            cars.put("audi", new Car("奥迪"));
            cars.put("ford", new Car("福特"));
        }   
        public static Car getCar(String name){
            return cars.get(name);
        }
            
        public static void main(String[] args) {
            ApplicationContext c = new ClassPathXmlApplicationContext("bean-cycle.xml");
            Car car = (Car) c.getBean("car1");
            System.out.println(car);
        }
    }
    
    

    动态工厂方法

    <bean id = "carFactory" class="cycle.InstanceFactory"></bean>
        <bean id = "car2" factory-bean="carFactory" factory-method="getCar">
            <constructor-arg value="ford"></constructor-arg>
        </bean> 
    
    import java.util.HashMap;
    import java.util.Map;
    
    import org.springframework.context.ApplicationContext;
    import org.springframework.context.support.ClassPathXmlApplicationContext;
    
    public class InstanceFactory {
    
        private Map<String, Car> cars = null;
        
        public InstanceFactory() {
            // TODO Auto-generated constructor stub
            cars = new HashMap<String, Car>();
            cars.put("audi", new Car("奥迪"));
            cars.put("ford", new Car("福特"));
        }
        
        public Car getCar(String name){
            return cars.get(name);
        }
        
        
        public static void main(String[] args) {
            ApplicationContext c = new ClassPathXmlApplicationContext("bean-cycle.xml");
            Car car = (Car) c.getBean("car2");
            System.out.println(car);
        }
        
    }
    
    

    相关文章

      网友评论

          本文标题:Spring-4静态工厂方法和动态工程方法配置bean

          本文链接:https://www.haomeiwen.com/subject/pddwjhtx.html