什么控制反转,还弄了一个新名词 —— ioc,说白了就是配置和程序相分离,通过配置文件进行实例化对象的操作,这跟李老师讲解的工厂设计完全是一个思路,找到XML解析,对应的内容,进行反射实例化,之后再通过反射调用类中的方法设置实例化对象,这原理多简单,我以后可不相信网上的那些人了,说什么spring特别难之类的,所谓的难真是对那些没有思想的人来说的,都说hibernate难,我也没觉得有多难,关键是思想啊!
3、建立接口
定义转换方法
package org.liky.dao; public interface ChangeDAO { public String changeString(String input) throws Exception; } |
4、定义两个实现类
定义两个实现类,分别实现转换为大写和小写的功能
package org.liky.dao.impl; import org.liky.dao.ChangeDAO; public class ToLowerDAOImpl implements ChangeDAO { public String changeString(String input) throws Exception { // TODO Auto-generated method stub return input.toLowerCase(); } } |
package org.liky.dao.impl; import org.liky.dao.ChangeDAO; public class ToUpperDAOImpl implements ChangeDAO { public String changeString(String input) throws Exception { // TODO Auto-generated method stub return input.toUpperCase(); } } |
5、在配置文件中配置实现类
<bean id="upper" class="org.liky.dao.impl.ToUpperDAOImpl"></bean> <bean id="lower" class="org.liky.dao.impl.ToLowerDAOImpl"></bean> |
6、测试
在测试类中创建对象,进行测试。
public static void main(String[] args) { // TODO Auto-generated method stub ChangeDAO changedao = null;
// 创建XML读取类,并传入xml的文件名 ApplicationContext ctx = new ClassPathXmlApplicationContext( "applicationContext.xml"); // 通过xml中配置的bean的id值自动创建对应的对象 changedao = (ChangeDAO) ctx.getBean("lower");
try { System.out.println(changedao.changeString("Hello World")); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } |