`
lichaozhangobj
  • 浏览: 100894 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

基于Properties文件的对象工厂工具

    博客分类:
  • java
阅读更多

 BeanFactory

package com.lichaozhang.util;

import java.io.IOException;
import java.io.InputStream;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;

public class BeanFactory {

	private static Map<String, Object> beanMap = new HashMap<String, Object>();

	static {
		// 读取配置文件
		Properties props = loadProperties("beans.properties");

		// 生成所有对象的实例,放到 beanMap 中
		for (Object key : props.keySet()) {
			String name = (String) key;
			String className = props.getProperty(name);
			try {
				// 生成实例
				Object instance = Class.forName(className).newInstance();
				// 放到beanMap中
				beanMap.put(name, instance);
			} catch (Exception e) {
				throw new RuntimeException("初始化实例出错:" + name + " = " + className, e);
			}
		}
	}

	private static Properties loadProperties(String resource) {
		Properties props = new Properties();
		InputStream in = null;
		try {
			in = BeanFactory.class.getClassLoader().getResourceAsStream(resource);
			props.load(in);
		} catch (IOException e) {
			throw new RuntimeException("加载配置文件出错:" + resource, e);
		} finally {
			try {
				in.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
		return props;
	}

	/**
	 * 获取指定接口对应的实现类
	 * 
	 * @param <T>
	 * @param clazz
	 * @return
	 */
	public static <T> T getBean(Class<T> clazz) {
		return (T) beanMap.get(clazz.getSimpleName());
	}
}

beans.properties

  

StoreDao=com.lichaozhang.dao.impl.StoreDaoImpl

 

StoreService

public interface StoreService {
}

 StoreServiceImpl

public class StoreServiceImpl implements StoreService {

	private StoreDao storeDao = BeanFactory.getBean(StoreDao.class);//BeanFactory用法
}

  StoreDao

public interface StoreDao {
}

 StoreDaoImpl

public class StoreDaoImpl implements StoreDao {
}

 

1
1
分享到:
评论

相关推荐

    xml+properties+生产消费

    在Java开发中,XML常用于存储和传递结构化数据,而.properties文件则用于存储应用的配置信息。生产者消费者模式是一种多线程设计模式,用于解决并发问题,确保数据的生产与消费过程的同步。 首先,让我们详细了解...

    struts.properties配置详解

    在Java Web开发的世界里,Struts2框架以其灵活性、高效性和丰富的功能特性,成为了许多开发者构建基于MVC模式应用程序的首选工具。Struts2框架不仅简化了MVC架构的实现,还通过其配置文件,如struts.properties,为...

    抽象工厂模式的简单实现

    Gradle是一个基于Groovy和Java的构建自动化工具,它允许开发者以声明式的方式定义构建过程。以下是相关知识点的详细说明: 1. **抽象工厂模式**: - 抽象工厂(Abstract Factory):定义一个创建对象的接口,但不...

    使用Java实现面向对象编程(门禁系统的面向对象设计)

    Log4j是一个强大的日志记录工具,通过配置文件(如log4j.properties或log4j.xml)可以定制日志级别(DEBUG、INFO、WARN、ERROR等)、输出目的地(控制台、文件、网络等)和格式。在门禁系统中,我们可以在关键操作或...

    struts.xml和struts.properties配置详解

    1. **struts.objectFactory**: 指定对象工厂,如Spring插件的`struts.objectFactory=org.apache.struts2.spring.StrutsSpringObjectFactory`。 2. **struts.i18n.locale**: 设置默认的语言环境,如`struts.i18n....

    Struts2配置文件

    5. **struts.objectFactory**: 配置对象工厂,例如`struts.objectFactory=spring`使用Spring作为对象工厂。 ### `struts.xml`配置文件 `struts.xml`是Struts2的核心配置文件,它定义了动作(Actions)、结果...

    利用Myeclipse简化基于Hibernate的数据库访问.pdf

    - **Properties文件**:用于配置Hibernate的运行参数,如数据库连接信息、方言(dialect)设置等。 - **XML Mapping文件**:这是Hibernate的核心,它定义了对象-关系映射规则,即如何将Java对象映射到数据库表,以及...

    JAVA数据库工具类

    在这个特定的场景中,我们关注的是一个基于DBCP(Database Connection Pool)的数据库工具类,它利用了Google工程师Bob Lee提出的懒汉单例模式来构建连接工厂,并将数据库连接与当前线程绑定,以优化资源管理和防止...

    基于Java的源码-copass源代码.zip

    10. **国际化与本地化**:对于用户界面,项目可能实现了国际化和本地化功能,利用Java的ResourceBundle类和.properties文件。 11. **数据库交互**:如果涉及到数据库操作,可能会有SQL查询和ORM(Object-Relational ...

    hibernate工具类大全

    在IT行业中,Hibernate是一个非常流行的Java对象关系映射(ORM)框架,它简化了数据库与Java应用程序之间的数据交互。这个“Hibernate工具类大全”压缩包包含了一系列资源,可以帮助开发者更高效地搭建和使用...

    smart-lottery抽奖系统基于COLA架构采用DDD领域驱动中四层架构

    DDD的核心概念包括聚合根、实体、值对象、领域事件、工厂、仓储等,这些元素帮助开发者构建出高度契合业务需求的模型。 在这个“smart-lottery”抽奖系统中,四层架构可能是这样的: 1. **表现层(Presentation ...

    基于java的聊天程序(JBuilder).zip

    - **配置文件**:可能是`.xml`或`.properties`文件,用于配置服务器端或客户端的行为。 - **资源文件**:如图片、音频或字体文件,用于增强聊天界面的用户体验。 - **项目文件**:JBuilder特有的`.bpr`或`.dpr`文件...

    ssh,ssm等的配置文件全套

    Hibernate作为ORM(对象关系映射)工具,实现了数据库操作与业务逻辑的解耦,使得开发者无需关心底层SQL语句。 SSH配置文件通常包括以下部分: 1. Struts2的struts-default.xml和struts.properties:定义了全局配置...

    MyBatis(ibatis)学习文档.docx

    使用XML配置文件时,需要在配置文件中定义数据库连接信息和映射关系,然后使用MyBatis提供的工具类来生成SqlSessionFactory。 不使用 XML 构建 SqlSessionFactory 如果不想使用XML配置文件,可以使用Java代码来构建...

    面向对象软件构造-Delphi技术资料

    面向对象软件构造是一种软件开发方法,它基于面向对象编程(OOP)的概念,将复杂的软件设计分解为一系列可重用的对象。Delphi是一款强大的集成开发环境(IDE),它以其高效的Object Pascal编译器和VCL(Visual ...

    基于JavaSE的宿舍管理系统

    8. **国际化和本地化**:对于多语言支持,JavaSE提供了资源包(Properties文件)和Locale类,方便系统适应不同地区的用户需求。 9. **反射和动态代理**:反射API允许程序在运行时检查和修改自身的行为,而动态代理...

    Redis工具类

    2. 在配置类中创建`RedisConnectionFactory`,并基于该工厂创建`RedisTemplate`实例。 3. 对`RedisTemplate`进行类型转换配置,例如设置序列化器(默认的Java序列化器可能会导致安全问题,一般推荐使用`...

    计算机毕业设计-基于java的报价管理系统源码实现

    3. 配置文件(如.properties或.xml):存储系统配置信息,如数据库连接信息、服务器设置等。 4. 测试文件(.test或JUnit文件):用于验证代码功能的正确性。 5. 文档(.doc或.pdf):可能包含系统设计文档、用户手册...

    基于Java的聊天系统-源码.zip

    3. **数据库配置**:可能有`.properties`文件,存储数据库连接信息。 4. **测试文件**:`.java` 或 `.test` 文件,用于单元测试和集成测试,确保代码的正确性。 5. **文档**:可能包含README.md文件,解释项目结构、...

Global site tag (gtag.js) - Google Analytics