spring-day01-1学习笔记使用工厂模式解耦
程序员文章站
2022-05-08 10:56:27
...
一.在resource目录下创建一个bean.properties配置文件,里面存放key=value形式的数据,右边是全限定类名:
accountService=com.itheima.service.impl.AccountServiceImpl
accountDao=com.itheima.dao.impl.AccountDaoImpl
二.创建一个BeanFactory工厂:
一个创建Bean对象的工厂
Bean:在计算机英语中,有可重用组件的含义。
JavaBean:用java语言编写的可重用组件。
javabean > 实体类
它就是创建我们的service和dao对象的。
第一个:需要一个配置文件来配置我们的service和dao
配置的内容:唯一标识=全限定类名(key=value)
第二个:通过读取配置文件中配置的内容,反射创建对象
(我的配置文件可以是xml也可以是properties)
public class BeanFactory {
//定义一个Properties对象
private static Properties props;
//定义一个Map,用于存放我们要创建的对象。我们把它称之为容器
private static Map<String,Object> beans;
//使用静态代码块为Properties对象赋值
static {
try {
//实例化对象
props = new Properties();
//获取properties文件的流对象
InputStream in = BeanFactory.class.getClassLoader().getResourceAsStream("bean.properties");
props.load(in);
//实例化容器
beans = new HashMap<String,Object>();
//取出配置文件中所有的Key
Enumeration keys = props.keys();
//遍历枚举
while (keys.hasMoreElements()){
//取出每个Key,使用toString()方法获取到真实的名称
//才能传入getProperties方法得到beanPath
String key = keys.nextElement().toString();
//根据key获取value
String beanPath = props.getProperty(key);
//反射创建对象
Object value = Class.forName(beanPath).newInstance();
//把key和value存入容器中
beans.put(key,value);
}
}catch(Exception e){
throw new ExceptionInInitializerError("初始化properties失败!");
}
}
/**
* 根据bean的名称获取对象
* @param beanName
* @return
*/
public static Object getBean(String beanName){
return beans.get(beanName);
}
里面使用map来存放要获取的对象,在每次类加载时把key和value都放入map中,以实现单例模式的功能,提高效率
使用了beanFactory后创建对象是这种格式了,通过工厂来获取需要的资源:
下一篇: Linux 3.7 正式版本发布推迟