1. 首页
  2. 软件开发
  3. Spring——如何使用Java反射实现简单的IOC容器

Spring——如何使用Java反射实现简单的IOC容器

  • 发布于 2024-08-17
  • 0 次阅读

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