zoukankan      html  css  js  c++  java
  • Spring初学之通过工厂方法配置Bean

    工厂方法配置bean分为两种,一种是实例工厂方法,另一种是静态工厂方法。

    先来看看实体bean:

    Car.java:

    package spring.beans.factory;
    
    public class Car {
        private String name;
        private int price;
        public Car(String name, int price) {
            super();
            this.name = name;
            this.price = price;
        }
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        public int getPrice() {
            return price;
        }
        public void setPrice(int price) {
            this.price = price;
        }
        @Override
        public String toString() {
            return "Car [name=" + name + ", price=" + price + "]";
        }
    }

    一、实例工厂方法配置bean

    InstanceBeanFactory.java:
    package spring.beans.factory;
    
    import java.util.HashMap;
    import java.util.Map;
    
    /**
     * 实例工厂方法
     * @author Administrator
     *
     */
    public class InstanceBeanFactory {
        private Map<String, Car> map=null;
    
        public InstanceBeanFactory() {
            map=new HashMap<String, Car>();
            map.put("奥迪", new Car("奥迪", 300000));
            map.put("福特", new Car("福特", 400000));
        }
        
        public Car getCar(String name){
            return map.get(name);
        }
        
    }

    spring的xml配置文件核心代码:

        <!-- 配置实例工厂方法的bean -->
        <bean id="instanceFactory" class="spring.beans.factory.InstanceBeanFactory"></bean>
    
        <!-- 通过实例工厂方法创建bean -->
        <bean id="car2" factory-bean="instanceFactory" factory-method="getCar">
            <constructor-arg value="福特"></constructor-arg>
        </bean>

    二、静态方法配置bean

    StaticBeanFactory.java:
    package spring.beans.factory;
    
    import java.util.HashMap;
    import java.util.Map;
    
    /**
     * 通过静态工厂方法创建bean
     * @author Administrator
     *
     */
    public class StaticBeanFactory {
         private static Map<String, Car> map=new HashMap<String, Car>();
        static{
            map.put("长安", new Car("长安", 30000));
            map.put("奥迪", new Car("奥迪", 300000));
        }
        
        public static Car getCar(String name){
            
            return map.get(name);
        }
    }

    spring的xml配置文件核心代码:

        <!-- 通过静态工厂方法创建bean -->
        <bean id="car" class="spring.beans.factory.StaticBeanFactory"
        factory-method="getCar">
        <constructor-arg value="奥迪"></constructor-arg>
        
        </bean>

    测试方法:

    package spring.beans.factory.test;
    
    import org.springframework.context.ApplicationContext;
    import org.springframework.context.support.ClassPathXmlApplicationContext;
    
    import spring.beans.factory.Car;
    
    public class Main {
    
        public static void main(String[] args) {
    
            ApplicationContext ctx=new ClassPathXmlApplicationContext("beans-factory.xml");
            Car car=(Car) ctx.getBean("car");
            System.out.println(car);
            
            Car car1=(Car) ctx.getBean("car2");
            System.out.println(car1);
        }
    
    }

    输出:

    Car [name=奥迪, price=300000]
    Car [name=福特, price=400000]
  • 相关阅读:
    Linux下环境变量配置方法梳理(.bash_profile和.bashrc的区别)
    Mac下安装配置Python2和Python3并相互切换使用
    精通Python自动化脚本
    idea之Git
    python面向对象之:细分类的组成成员
    new string("abc")创建了几个对象
    进程和线程的主要区别
    Leetcode 572 另一个树的子树
    Leetcode 二叉树的坡度
    Leetcode 559 N叉树的最大深度
  • 原文地址:https://www.cnblogs.com/hyyq/p/6701774.html
Copyright © 2011-2022 走看看