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 {
}
分享到:
相关推荐
在Java开发中,XML常用于存储和传递结构化数据,而.properties文件则用于存储应用的配置信息。生产者消费者模式是一种多线程设计模式,用于解决并发问题,确保数据的生产与消费过程的同步。 首先,让我们详细了解...
在Java Web开发的世界里,Struts2框架以其灵活性、高效性和丰富的功能特性,成为了许多开发者构建基于MVC模式应用程序的首选工具。Struts2框架不仅简化了MVC架构的实现,还通过其配置文件,如struts.properties,为...
Gradle是一个基于Groovy和Java的构建自动化工具,它允许开发者以声明式的方式定义构建过程。以下是相关知识点的详细说明: 1. **抽象工厂模式**: - 抽象工厂(Abstract Factory):定义一个创建对象的接口,但不...
Log4j是一个强大的日志记录工具,通过配置文件(如log4j.properties或log4j.xml)可以定制日志级别(DEBUG、INFO、WARN、ERROR等)、输出目的地(控制台、文件、网络等)和格式。在门禁系统中,我们可以在关键操作或...
1. **struts.objectFactory**: 指定对象工厂,如Spring插件的`struts.objectFactory=org.apache.struts2.spring.StrutsSpringObjectFactory`。 2. **struts.i18n.locale**: 设置默认的语言环境,如`struts.i18n....
5. **struts.objectFactory**: 配置对象工厂,例如`struts.objectFactory=spring`使用Spring作为对象工厂。 ### `struts.xml`配置文件 `struts.xml`是Struts2的核心配置文件,它定义了动作(Actions)、结果...
- **Properties文件**:用于配置Hibernate的运行参数,如数据库连接信息、方言(dialect)设置等。 - **XML Mapping文件**:这是Hibernate的核心,它定义了对象-关系映射规则,即如何将Java对象映射到数据库表,以及...
在这个特定的场景中,我们关注的是一个基于DBCP(Database Connection Pool)的数据库工具类,它利用了Google工程师Bob Lee提出的懒汉单例模式来构建连接工厂,并将数据库连接与当前线程绑定,以优化资源管理和防止...
10. **国际化与本地化**:对于用户界面,项目可能实现了国际化和本地化功能,利用Java的ResourceBundle类和.properties文件。 11. **数据库交互**:如果涉及到数据库操作,可能会有SQL查询和ORM(Object-Relational ...
在IT行业中,Hibernate是一个非常流行的Java对象关系映射(ORM)框架,它简化了数据库与Java应用程序之间的数据交互。这个“Hibernate工具类大全”压缩包包含了一系列资源,可以帮助开发者更高效地搭建和使用...
DDD的核心概念包括聚合根、实体、值对象、领域事件、工厂、仓储等,这些元素帮助开发者构建出高度契合业务需求的模型。 在这个“smart-lottery”抽奖系统中,四层架构可能是这样的: 1. **表现层(Presentation ...
- **配置文件**:可能是`.xml`或`.properties`文件,用于配置服务器端或客户端的行为。 - **资源文件**:如图片、音频或字体文件,用于增强聊天界面的用户体验。 - **项目文件**:JBuilder特有的`.bpr`或`.dpr`文件...
Hibernate作为ORM(对象关系映射)工具,实现了数据库操作与业务逻辑的解耦,使得开发者无需关心底层SQL语句。 SSH配置文件通常包括以下部分: 1. Struts2的struts-default.xml和struts.properties:定义了全局配置...
使用XML配置文件时,需要在配置文件中定义数据库连接信息和映射关系,然后使用MyBatis提供的工具类来生成SqlSessionFactory。 不使用 XML 构建 SqlSessionFactory 如果不想使用XML配置文件,可以使用Java代码来构建...
面向对象软件构造是一种软件开发方法,它基于面向对象编程(OOP)的概念,将复杂的软件设计分解为一系列可重用的对象。Delphi是一款强大的集成开发环境(IDE),它以其高效的Object Pascal编译器和VCL(Visual ...
8. **国际化和本地化**:对于多语言支持,JavaSE提供了资源包(Properties文件)和Locale类,方便系统适应不同地区的用户需求。 9. **反射和动态代理**:反射API允许程序在运行时检查和修改自身的行为,而动态代理...
2. 在配置类中创建`RedisConnectionFactory`,并基于该工厂创建`RedisTemplate`实例。 3. 对`RedisTemplate`进行类型转换配置,例如设置序列化器(默认的Java序列化器可能会导致安全问题,一般推荐使用`...
3. 配置文件(如.properties或.xml):存储系统配置信息,如数据库连接信息、服务器设置等。 4. 测试文件(.test或JUnit文件):用于验证代码功能的正确性。 5. 文档(.doc或.pdf):可能包含系统设计文档、用户手册...
3. **数据库配置**:可能有`.properties`文件,存储数据库连接信息。 4. **测试文件**:`.java` 或 `.test` 文件,用于单元测试和集成测试,确保代码的正确性。 5. **文档**:可能包含README.md文件,解释项目结构、...