spring中的工厂原理简单模拟

package service;

import dao.User;
import factory.Factory;

public class Test {
// private static User user = new UserImpl();//耦合度太高

private static User user = (User) Factory.getIntence().getBean("userdao");
public static void main(String[] args) {
user.saveUser();
}
}

package dao;

public interface User {
public void saveUser();
public void deleteUser();
public void updateUser();
public void findUser();
}

import dao.User;
public class UserImpl implements User{
public void saveUser() {
System.out.println("保存用户");
}
public void deleteUser() {
System.out.println("删除用户");
}
public void updateUser() {
System.out.println("更新用户");
}
public void findUser() {
System.out.println("查找用户");
}
}

package factory;

import java.util.Enumeration;
import java.util.HashMap;
import java.util.Map;
import java.util.ResourceBundle;

public class Factory {
private static Factory factory;
//ResourceBundle只能读取资源文件 注意:只能读不能写 只能读资源文件
//只能读取类的路径下的
private static ResourceBundle bundle = ResourceBundle.getBundle("bean");//参数是资源文件的位置,按照报名.资源文件名来写
private static Map<String,Object> map = new HashMap<String,Object>();//在spring中相当于web容器 用来保证dao层的对象唯一
static{
factory=new Factory();
try {
Enumeration<String> keys = bundle.getKeys();
while(keys.hasMoreElements()){
String key = keys.nextElement();//得到一个key
String classpath = bundle.getString(key);
//使用反射创建对象实例
Object object = Class.forName(classpath).newInstance();
map.put(key, object);
}
} catch (Exception e) {
throw new RuntimeException();
}
}
private Factory(){
}
public static Factory getIntence(){
return factory;
}
/** 为了防止多个线程同时调用这个方法出现线程安全问题


/
public synchronized Object getBean(String param){
/Object bean = null;
try {
//根据参数,在资源文件中获取类的全路径
String classpath = bundle.getString(param);
//使用反射 创建对象
bean = Class.forName(classpath).newInstance();
return bean;
} catch (Exception e) {
throw new RuntimeException(e);
}
/
return map.get(param);
}
}

spring的核心ioc和aop 其中ioc的意思就是放弃创建下一层对象的权利,把这个权利交给spring工厂 上类中factory

原文地址:http://blog.51cto.com/13579086/2086984

时间: 2024-11-07 00:29:08

spring中的工厂原理简单模拟的相关文章

spring中的工厂(二)FactoryBean

工厂bean是Spring中的特殊Bean,工厂bean必须要实现FactoryBean接口.FaCtoryBean接口是工厂Bean的标准接口.Factorybean提供以下三个方法, T getObject():实现该方法负责返回该工厂Bean生成的Java实例. Class<?> getObjectType():实现该方法返回该工厂Bean生成的Java实例的实现类 boolean isSingleton():实现该方法表示工厂Bean生成的java实例是否是单利模式的.  程序通过ge

Spring中ClassPathXmlApplicationContext类的简单使用

一.简单的用ApplicationContext做测试的话,获得Spring中定义的Bean实例(对象).可以用: ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");RegisterDAO registerDAO = (RegisterDAO)ac.getBean("RegisterDAO"); 如果是两个以上:ApplicationContext

Spring中的IoC原理

Spring中IoC的入门实例 Spring的模块化是很强的,各个功能模块都是独立的,我们可以选择的使用.这一章先从Spring的IoC开始.所谓IoC就是一个用XML来定义生成对象的模式,我们看看如果来使用的. 数据模型 1.如下图所示有三个类,Human(人类)是接口,Chinese(中国人)是一个子类,American(美国人)是另外一个子类. 源代码如下: package cn.com.chengang.spring;public interface Human {void eat();

聊聊Spring中的工厂

BeanFactory是Spring IOC容器的根接口,定义了Bean工厂的最基础的功能特性,比如根据name获取指定bean等,根据不同用途它的子接口又对它的功能进行细化,比如是否是可列表的,是否是有层次关系的,是否拥有自动装配能力等.它最常用的实现类DefaultListableBeanFactory,它直接或通过继承间接实现了上述接口的所有功能,并被ApplicationConext的实现类持有,实例化为运行中的IOC容器(一系列可能有相互依赖关系的Bean集合). FactoryBea

浅析redis缓存 在spring中的配置 及其简单的使用

一:如果你需要在你的本地项目中配置redis.那么你首先得需要在你的本地安装redis 参考链接[http://www.runoob.com/redis/redis-install.html] 下载redis在网上有很多 我这里就不多做解释了 下载以后 找到这样的三个文件  这是我们需要操作的 每个版本可能不一样 但这几个肯定是有的 然后 安装这个http://www.runoob.com/redis/redis-install.html 进行配置 当然很重要的一步是你需要在 redis.win

Spring中FactoryBean的作用和实现原理

BeanFactory与FactoryBean,相信很多刚翻看Spring源码的同学跟我一样很好奇这俩货怎么长得这么像,分别都是干啥用的.BeanFactory是Spring中Bean工厂的顶层接口,也是我们常说的SpringIOC容器,它定下了IOC容器的一些规范和常用方法并管理着Spring中所有的Bean,今天我们不讲它,我们看一下后面那个FactoryBean. 先说下FactoryBean和其作用再开始分析:首先它是一个Bean,但又不仅仅是一个Bean.它是一个能生产或修饰对象生成的

详解设计模式在Spring中的应用

设计模式作为工作学习中的枕边书,却时常处于勤说不用的尴尬境地,也不是我们时常忘记,只是一直没有记忆. 今天,螃蟹在IT学习者网站就设计模式的内在价值做一番探讨,并以spring为例进行讲解,只有领略了其设计的思想理念,才能在工作学习中运用到“无形”. Spring作为业界的经典框架,无论是在架构设计方面,还是在代码编写方面,都堪称行内典范.好了,话不多说,开始今天的内容. spring中常用的设计模式达到九种,我们一一举例: 第一种:简单工厂 又叫做静态工厂方法(StaticFactory Me

Spring中的用到的设计模式大全

spring中常用的设计模式达到九种,我们举例说明: 第一种:简单工厂 又叫做静态工厂方法(StaticFactory Method)模式,但不属于23种GOF设计模式之一. 简单工厂模式的实质是由一个工厂类根据传入的参数,动态决定应该创建哪一个产品类. spring中的BeanFactory就是简单工厂模式的体现,根据传入一个唯一的标识来获得bean对象,但是否是在传入参数后创建还是传入参数前创建这个要根据具体情况来定.如下配置,就是在 HelloItxxz 类中创建一个 itxxzBean.

Spring中应用的那些设计模式

设计模式作为工作学习中的枕边书,却时常处于勤说不用的尴尬境地,也不是我们时常忘记,只是一直没有记忆. 今天,我们就设计模式的内在价值做一番探讨,并以spring为例进行讲解,只有领略了其设计的思想理念,才能在工作学习中运用到“无形”. Spring作为业界的经典框架,无论是在架构设计方面,还是在代码编写方面,都堪称行内典范.Spring中常用的设计模式达到九种,如下: 第一种:简单工厂 又叫做静态工厂方法(StaticFactory Method)模式,但不属于23种GOF设计模式之一. 简单工