Spring-2
二、Spring容器
单例bean与单例模式不同,单例bean表示根据Class引申的BeanDefinition是单例的,但是他依旧可以创建多个实例。
单例、原型:这两个是相对的概念,而且把他们放在一起就可以更好的理解单例bean。首先讲一下原型bean,表示把原本的class作为一个原型,每次的BeanDefinition都是根据原型创造的。
1.单例池
ConcurrentHashMap singletonObject beanName Object
2.BeanFactory Bean工厂
DefaultListableBeanFactory beanFactory = new DefaultListableBeanFactory();
// 方法一
AbstractBeanDefinition beanDefinition = BeanDefinitionBuilder.genericBeanDefinition().getBeanDefinition();
beanDefinition.setBeanClass(User.class);
beanFactory.registerBeanDefinition("user2",beanDefinition);
// 方法二
beanFactory.registerSingleton("user",new User());
User user = beanFactory.getBean("user", User.class);
User user2 = beanFactory.getBean("user2", User.class);
System.out.println(user);
System.out.println(user2);
3.ApplicationContex
// 传入文件项目地址或者全地址
FileSystemXmlApplicationContext fileSystemXmlApplicationContext = new FileSystemXmlApplicationContext();
// 传入文件classpath地址
ClassPathXmlApplicationContext classPathXmlApplicationContext = new ClassPathXmlApplicationContext();
// 传入配置类
AnnotationConfigApplicationContext annotationConfigApplicationContext = new AnnotationConfigApplicationContext();