博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Spring 静态工厂实例
阅读量:5299 次
发布时间:2019-06-14

本文共 2320 字,大约阅读时间需要 7 分钟。

直接上代码,看注释。

 

创建实体类:

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);
    }
}

 

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

 

转载于:https://www.cnblogs.com/yvanBk/p/8523949.html

你可能感兴趣的文章
7、学习大数据笔记-hadoop fs 命令
查看>>
Vue路由的实现原理
查看>>
Spring Boot教程(5) – 模板引擎
查看>>
使用maven搭建ssm框架环境
查看>>
docker安装配置gitlab时的常用命令整理
查看>>
二丶Python字符串1
查看>>
七丶Python字典
查看>>
一丶Python简介
查看>>
Mysql基础知识
查看>>
常用的分析方法有哪些?
查看>>
Excel-图表制作
查看>>
Excel 日期和时间函数
查看>>
面对问题,如何去分析?(流失问题)
查看>>
Excel 文本函数
查看>>
电商数据分析总结
查看>>
Excel-信息函数&数组公式
查看>>
Excel-基本操作
查看>>
面对问题,如何去分析?(分析套路)
查看>>
Excel-逻辑函数
查看>>
面对问题,如何去分析?(日报问题)
查看>>