目录
1. Object getBean(String beanName)
3. T getBean (String name,Class type)
我们知道,Spring 框架实现了依赖注入控制反转,除去了我们自行创建对象的一个过程,使我们在项目上大程度的实现了解耦,在获取 Bean 对象的时候,Spring 框架为我们提供了三种获取方式。
1. Object getBean(String beanName)
该方法是通过名称获取 Bean 对象,参数就是要传入获取的Bean对向的名称,并且要求 Bean 对象唯一,该方法的返回值是Object对象,而我们通常需要的类型是 xxxDao,xxxService数据访问层或业务层具体对象,因此在获取之后我们需要对它做强转,转变为我们为你需要的类型。
示例代码如下:
// 通过 ApplicationContext 容器获取到 UserService 对象,并作强转
UserService userService = (UserService) applicationContext.getBean("userService");
2. T getBean(Class type)
该方法是一个泛型方法,参数需要传递一个类的字节码对象,返回值是Class的类型实例,因为该方法指定了具体的字节码文件对象,所以不需要再做强转。
示例如下:
// 通过类的字节码文件对象获取 Bean 对象,前提是该UserService只定义了一个Bean
// 假设我们在xml配置文件中定义了两个Bean,userService1和 userService2,
// 使用该方法获取Bean对象时就会报错,因为容器不知道你要获取的是 userService1,
// 还是要获取 userService2 的对象,所以该方法仅限于Bean只定义了一个时使用!!!切记
UserService userService = applicationContext.getBean("UserService.class");
3. T getBean (String name,Class type)
该方法差不多算是前两种方法的结合,它不需要做强转,因为在参数列表我们可以传入一个类的字节码文件对象,底层已近进行了转化,方法返回值也是一个 Class 实例。
示例如下:
// 第一个参数传递要获取的指定Bean,第二个参数传递Bean的字节码文件对象。
UserService userService = applicationContext.getBean("userService",UserService.class);