SpringIOC底层原理代码实现

2 篇文章 0 订阅
1 篇文章 0 订阅

IOC

IOC:控制反转,将类放到配置文件,由spring帮我们创建类对象,并放到spring容器中管理,这种操作就叫做控制反转(IOC)。
IOC是一种思想,spring实现了这种思想,所以叫做spring IOC。

方案

使用工厂模式+反射机制+配置文件(可以完成程序的解耦合)

工厂模式

public class Factory {
    public static Object getBean(String beanName) {
        Object obj = null;
        try {
        	//加载配置文件拿到className
            Properties p = new Properties();
            InputStream is = Factory.class.getClassLoader().getResourceAsStream("bean.properties");
            p.load(is);
            String className = p.getProperty(beanName);
            //使用反射机制拿到对象
            Class clazz = Class.forName(className);
            obj = clazz.newInstance();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return obj;
    }
}

配置文件

UserDao=cn.xyy.dao.impl.UserDaoTemplate
UserService=cn.xyy.service.impl.UserServiceImpl

web层

public class UserServlet {
    public static void main(String[] args) throws InterruptedException {
    
        while (true){
        
        UserService service = (UserService) Factory.getBean("UserService");
        service.add();

        Thread.sleep(300);
        }
    }
}

service层

public class UserServiceImpl implements UserService {
    //方法工厂的方式实现解耦合
    UserDao userDao = (UserDao) Factory.getBean("UserDao");
    @Override
    public void add() {
        userDao.add();
    }
}

dao层

public class UserDaoImpl implements UserDao {
    @Override
    public void add() {
        System.out.println("传统jdbc进行添加用户");
    }
}

public class UserDaoTemplate implements UserDao {
    @Override
    public void add() {
        System.out.println("使用JdbcTemplate进行添加用户");
    }
}

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值