Spring中getBean()三种方式
- getBean(String beanId):通过beanId获取对象
- 不足:需要强制类型转换,不灵活
- getBean(Class clazz):通过Class方式获取对象
- 不足:容器中有多个相同类型bean的时候,会报如下错误:
expected single matching bean but found 2:
- 不足:容器中有多个相同类型bean的时候,会报如下错误:
- getBean(String beanId,Class clazz):通过beanId和Class获取对象
- 推荐使用
注意:框架默认都是通过无参构造器,帮助我们创建对象。
所以:如提供对象的构造器时,一定添加无参构造器
SpringIOC底层实现
IOC:将对象的控制器反转给Spring
BeanFactory与ApplicationContexet
- BeanFactory:IOC容器的基本实现,是Spring内部的使用接口,是面向Spring本身的,不是提供给开发人员使用的。
- ApplicationContext:BeanFactory的子接口,提供了更多高级特性。面向Spring的使用者,几乎所有场合都使用ApplicationContext而不是底层的BeanFactory。
- 图解IOC类的结构
BeanFactory:Spring底层IOC实现【面向Spring框架】 - …
- ApplicationContext:面向程序员
- ConfigurableApplicationContext:提供关闭或刷新容器对象方法
- …
- ClassPathXmlApplicationContext:基于类路径检索xml文件
- AnnotationConfigApplicationContext:基于注解创建容器对象
- FileSystemXmlApplicationContext:基于文件系统检索xml文件
- …
- ConfigurableApplicationContext:提供关闭或刷新容器对象方法
- ApplicationContext:面向程序员