Spring IOC(控制反转)是一种设计模式,它通过将对象的创建和依赖注入的控制权交给容器来实现松耦合。在Spring框架中,IOC容器负责管理应用程序中的对象以及这些对象之间的依赖关系。
要手动实现类似Spring IOC的功能,可以使用Java的反射机制来动态地实例化对象并注入依赖。
import java.lang.reflect.Constructor;
import java.util.HashMap;
import java.util.Map;
public class SimpleIOC {
private Map<String, Object> beanMap = new HashMap<>();
public void registerBean(String beanName, Class<?> beanClass, Constructor<?> constructor, Object... constructorArgs) throws Exception {
Object bean = constructor.newInstance(constructorArgs);
beanMap.put(beanName, bean);
}
public Object getBean(String beanName) {
return beanMap.get(beanName);
}
public static void main(String[] args) throws Exception {
SimpleIOC ioc = new SimpleIOC();
// 注册bean
ioc.registerBean("userService", UserService.class, UserService.class.getConstructor());
ioc.registerBean("userDao", UserDao.class, UserDao.class.getConstructor());
// 获取bean
UserService userService = (UserService) ioc.getBean("userService");
userService.process();
}
}
class UserService {
private UserDao userDao;
public UserService() {
}
public void setUserDao(UserDao userDao) {
this.userDao = userDao;
}
public void process() {
System.out.println("Processing user data...");
userDao.getUser();
}
}
class UserDao {
public void getUser() {
System.out.println("Getting user data...");
}
}
SimpleIOC类充当了一个简单的IOC容器,通过反射动态地实例化UserService和UserDao对象,并将它们注入到对应的依赖中。
原文链接: https://blog.csdn.net/2401_82884096/article/details/137840549