SpringIOC底层原理代码实现
程序员文章站
2022-04-01 10:36:47
SpringIOC底层原理代码实现IOC方案工厂模式配置文件web层service层dao层IOCIOC:控制反转,将类放到配置文件,由spring帮我们创建类对象,并放到spring容器中管理,这种操作就叫做控制反转(IOC)。IOC是一种思想,spring实现了这种思想,所以叫做spring IOC。方案使用工厂模式+反射机制+配置文件(可以完成程序的解耦合)工厂模式public class Factory { public static Object getBean(String...
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进行添加用户");
}
}
本文地址:https://blog.csdn.net/weixin_45958862/article/details/107697864
上一篇: DAY10
下一篇: 学习消息队列需要关注的几个问题