- ioc:Inversion of Control(控制翻转)(自称:IOC容器)
- 简单的说:就是将创建对象的权利,从开发人员的手里转换到IOC手里(有IOC帮助创建对象)
- 功能需求模拟:
- 将属性文件的内容读取出来
- 存放在一个Map容器中,对外提供一个Get方法,通过Key值来取得值
- 根据key取出来的值,来创建一个对象,并且将key为键,Object为值存放在容器中,需要什么时,通过key来获取的对象
- 实现步骤:
- 在根目录下创建一个ApplicationContext.xml的文件
- 目的:
- 添加测试代码(ApplicationContext.xml)代码如下
- 目的:
- 在根目录下创建一个ApplicationContext.xml的文件
dao=com.bjsxt.lc.spring.dao.impl.DaoMySqlImpl
dao2 =com.bjsxt.lc.spring.dao.impl.DaoOracleImpl
2、创建POJO接口
3、创建POJO实现类package com.bjsxt.lc.spring.dao; public interface IDao { void cave(); void update(); }
package com.bjsxt.lc.spring.dao.impl; import com.bjsxt.lc.spring.dao.IDao; /** * 模拟两个数据库之间的切换 * @author Administrator * */ public class DaoMySqlImpl implements IDao { /** * 调用Mysql的方法 */ public DaoMySqlImpl() { System.out.println("--构造器被执行了--->--DaoMySqlImpl----"); } @Override public void cave() { System.out.println("---DaoMySqlImpl----"); } @Override public void update() { } public void infoMethod() { System.out.println("---infoMethod---"); } }
package com.bjsxt.lc.spring.dao.impl; import com.bjsxt.lc.spring.dao.IDao; public class DaoOracleImpl implements IDao { @Override public void cave() { System.out.println("----DaoOracleImpl----"); } @Override public void update() { } }
4:提供一个核心工具类实现对配置文件的读取和转化package com.bjsxt.lc.spring.util; import java.util.Enumeration; import java.util.HashMap; import java.util.Map; import java.util.ResourceBundle; /** * 测试读取文件 * #~将属性文件的内容读取出来 # ~将属性文件的内容放到容器中,提供一个方法通过key拿值 #~如何根据字符串创建一个对象,将对象放到容器中;键为名字(属性中的名字,随便起的),值为对象 * @author Administrator * */ public class ApplicationContext { /* 拿出拿到的值,并且将数据存放到Map容器中 */ private static Map<String,Object> contextMap = new HashMap<String,Object>(); static{ ResourceBundle bundle = ResourceBundle.getBundle("applicationContext"); /* 获取一个 */ String string = bundle.getString("dao"); // System.out.println(string); /* 获取多个 */ Enumeration<String> keys = bundle.getKeys(); /* 遍历 */ while (keys.hasMoreElements()) { String key = (String) keys.nextElement(); // System.out.println("key="+key+"---》"+bundle.getString(key)); /* 将数据存放到Map容器里 */ contextMap.put(key, bundle.getObject(key)); } } /* * 提供对外获得Map的方法 * */ public static Map<String,Object> getContextMap() { return contextMap; } /* * 对外提供直接获得一个值得方法 * */ public static String getKey(String key) { return (String) contextMap.get(key); } }
5:测试类package com.bjsxt.lc.spring.test; import java.util.Map; import org.junit.Test; import com.bjsxt.lc.spring.dao.IDao; import com.bjsxt.lc.spring.util.ApplicationContext; /** * 测试ApplincationContext * @author Administrator * */ public class TestApplicationContext { @Test public void testApplicationContext() throws InstantiationException, IllegalAccessException, ClassNotFoundException { //测试一 //new ApplicationContext(); //测试二 Map<String, Object> map = ApplicationContext.getContextMap(); // for (Entry entry:map.entrySet()) // { // System.out.println(entry.getKey()+"------->"+entry.getValue()); // } //测试三 String result = ApplicationContext.getKey("dao"); // System.out.println(result); IDao dao = (IDao) Class.forName(result).newInstance(); dao.cave(); } }