这是一个简单的IoC容器 SimpleIoCContainer,允许你注册Bean定义并获取Bean实例。这只是一个基本的示例,实际的IoC容器要复杂得多,包括更多功能,如依赖注入、生命周期管理、AOP等。
import java.util.HashMap;
import java.util.Map;
class BeanDefinition {
private Class<?> beanClass;
public BeanDefinition(Class<?> beanClass) {
this.beanClass = beanClass;
}
public Class<?> getBeanClass() {
return beanClass;
}
}
// 简单的IoC容器
class SimpleIoCContainer {
private Map<String, BeanDefinition> beanDefinitionMap = new HashMap<>();
private Map<String, Object> beanMap = new HashMap<>();
// 注册Bean定义
public void registerBean(String beanName, Class<?> beanClass) {
BeanDefinition beanDefinition = new BeanDefinition(beanClass);
beanDefinitionMap.put(beanName, beanDefinition);
}
// 获取Bean实例
public Object getBean(String beanName) throws Exception {
if (!beanDefinitionMap.containsKey(beanName)) {
throw new IllegalArgumentException("No bean named " + beanName + " is defined");
}
if (beanMap.containsKey(beanName)) {
return beanMap.get(beanName);
}
BeanDefinition beanDefinition = beanDefinitionMap.get(beanName);
Class<?> beanClass = beanDefinition.getBeanClass();
Object bean = beanClass.getDeclaredConstructor().newInstance();
beanMap.put(beanName, bean);
return bean;
}
}
// 示例Bean类
class HelloWorldService {
public void sayHello() {
System.out.println("Hello, World!");
}
}
class SimpleIoCExample {
public static void main(String[] args) throws Exception {
// 创建IoC容器
SimpleIoCContainer container = new SimpleIoCContainer();
// 注册Bean定义
container.registerBean("helloWorldService", HelloWorldService.class);
// 获取Bean实例
HelloWorldService helloWorldService = (HelloWorldService) container.getBean("helloWorldService");
// 使用Bean
helloWorldService.sayHello();
}
}