源码参考:github上的code4craft/tiny-spring
项目。
tiny-spring-step-1-container-register-and-get。
源码解析
BeanDefinition
一个bean对应一个beanDefinition。
BeanFactory
beanfactory中维护了一个map,专门存储beanDefinition。
测试
定义一个bean,取名为HelloWorldService
public class HelloWorldService {
public void helloWorld(){
System.out.println("Hello World!");
}
}
1.创建beanFactory
2.创建beanDefinition,对应的bean为helloWorldService
3.注册bean
4.从beanFactory中获取bean
public class BeanFactoryTest {
@Test
public void test() {
// 1.初始化beanfactory
BeanFactory beanFactory = new BeanFactory();
// 2.注入bean
BeanDefinition beanDefinition = new BeanDefinition(new HelloWorldService());
beanFactory.registerBeanDefinition("helloWorldService", beanDefinition);
// 3.获取bean
HelloWorldService helloWorldService = (HelloWorldService) beanFactory.getBean("helloWorldService");
helloWorldService.helloWorld();
}
}