A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 逆风TO 黑马粉丝团   /  2020-2-12 16:51  /  725 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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加载机制有更清晰的了解,你也试一试吧....


0 个回复

您需要登录后才可以回帖 登录 | 加入黑马