• Spring 静态工厂实例


    直接上代码,看注释。

    创建实体类:

    package com.spring.classs;

    public class Test {
        private String name;
        private String age;
        
        
        public Test(String name, String age) {
            this.name = name;
            this.age = age;
        }
        public void setName(String name) {
            this.name = name;
        }
        public void setAge(String age) {
            this.age = age;
        }
        
        public void hellod(){
            System.out.println("hello:"+name+"年龄"+age);
        }
        @Override
        public String toString() {
            return "Test [name=" + name + ", age=" + age + "]";
        }
        
    }

    创建静态的工厂类

    package com.spring.beansfactory;

    import java.util.HashMap;
    import java.util.Map;

    import com.spring.classs.Test;

    /**
     *
     * @author 周永发
     *静态工厂方法:直接调用某一个类的静态方法就可以返回Bean 的实例
     */
    public class StaticCarFactory {
        private static Map<String,Test> testMap = new HashMap<String,Test>();
        static{
            testMap.put("aud1", new Test("test1","32"));
            testMap.put("aud2", new Test("test2","15"));
        }
        //静态工厂方法
        public static Test getCar(String name){
            return testMap.get(name);
        }
    }

    在Spring的配置文件中配置

    <?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:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
       http://www.springframework.org/schema/context
       http://www.springframework.org/schema/context/spring-context-3.0.xsd">  
     
    <!-- 配置bean的全类名 -->
    <!--  通过静态方法配置Bean,不是配置静态工厂的实例,而是配置Bean的实例 -->
        <!--  class属性:指向静态工厂方法的全类名
              factory-method:指向静态工厂方法的名字
              constructor-arg:如果工厂方法需要传入参数,则使用Constructor-arg
               来配置参数
          -->
        <bean id="test1" class="com.spring.beansfactory.StaticCarFactory" factory-method="getCar">
        <constructor-arg value="aud1"></constructor-arg>
        </bean>

    </beans>

    在Main方法中调用

    package com.spring.test;

    import org.springframework.context.ApplicationContext;
    import org.springframework.context.support.ClassPathXmlApplicationContext;

    import com.spring.classs.Test;

    public class Spring1 {
        public static void main(String[] args){
            //1.创建Spring的IOC容器对象
            //ApplicationContext 代表IOC容器,且必须要在创建BEAN实例之前
            ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext-Spring.xml");
            //2.从IOC容器中获取BEAN
            Test test =(Test)ctx.getBean("test1");
            //3.调用方法
            test.hellod();
            System.out.println(test);
        }

    }

    核心思想是在静态工厂中的对象不用实例化!

    周永发
  • 相关阅读:
    MVC三层架构学习总结实例
    JSON & Ajax
    设计模式之单例模式
    设计模式之静态工厂方法
    Gitee 添加了ssh公钥还是需要账户和密码
    MySQL日期时间函数大全[转]
    session 注意事项
    session 入库2 垃圾回收机制
    session 入库的实现
    PHP实现手机号码中间四位用星号(*)隐藏的自定义函数分享
  • 原文地址:https://www.cnblogs.com/yvanBk/p/8523949.html
Copyright © 2020-2023  润新知