黑马程序员技术交流社区

标题: spring之ioc工厂模式 [打印本页]

作者: 逆风TO    时间: 2020-2-12 16:51
标题: spring之ioc工厂模式
spring三大模块,ioc是基础,最大优点是解耦。突出两大特点,反转和依赖注入(其实就是赋值)。

反转的底层思想就用到工厂模式。那我们就一起揭开他的面纱。
第一步:创建我们传统的dao层

public interface TestIocDao {
    void save();
}
public class TestIocDaoImpl implements TestIocDao {
    @Override
    public void save() {
        System.out.println("保存到数据库");
    }
}
第二步:创建我们传统的service层

public interface TestIocService {
    public void save();
}
public class TestIocServiceImpl implements TestIocService {

    private TestIocDao iocDao = (TestIocDao)MyBeanFactory.getBean("testIocDao");

    @Override
    public void save() {
        iocDao.save();
    }
}
第三步:创建我们的工厂

public class MyBeanFactory {

    private static Properties properties = new Properties();

    static {
        InputStream inputStream = MyBeanFactory.class.getResourceAsStream("/iocBean.properties");
        try {
            properties.load(inputStream);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public static Object getBean(String name){
        String className = properties.getProperty(name);
        try {
            return Class.forName(className).newInstance();
        } catch (InstantiationException |IllegalAccessException|ClassNotFoundException e) {
            e.printStackTrace();
        }
        return null;
    }
}
第四步:创建模拟的xml,的txt文件

testIocDao=com.pian.dao.impl.TestIocDaoImpl
testIocService=com.pian.service.impl.TestIocServiceImpl
第五步:创建测试用例

public class TestIocFactory {

    private TestIocService iocService = (TestIocService)MyBeanFactory.getBean("testIocService");

    @Test
    public void test1(){
        iocService.save();
    }
}
总结:代码比较简单,就不解释了,写出来,,可以加深对spring加载机制有更清晰的了解,你也试一试吧....







欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2