Spring 中获取 Bean 对象的方式

目录

1. Object getBean(String beanName)

2. T getBean(Class type)

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);

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring ,一个 bean 对象的生命周期可以分为以下几个阶段: 1. 实例化 bean 对象:当 Spring 容器启动时,会根据配置文件或注解等方式创建 bean 对象。 2. 设置对象属性:当 bean 对象被实例化后,Spring 容器会将配置文件或注解的属性值注入到对象。 3. 调用 BeanPostProcessor 的 postProcessBeforeInitialization 方法:BeanPostProcessor 是一个后置处理器,Spring 容器会在实例化 bean 对象后调用其 postProcessBeforeInitialization 方法,在该方法可以对 bean 对象进行一些处理操作。 4. 调用对象的初始化方法:在调用 BeanPostProcessor 的 postProcessBeforeInitialization 方法之后,Spring 容器会调用对象的初始化方法,该方法可以自定义,通过配置文件或注解等方式指定。 5. 调用 BeanPostProcessor 的 postProcessAfterInitialization 方法:在调用对象的初始化方法之后,Spring 容器会再次调用 BeanPostProcessor 的 postProcessAfterInitialization 方法,该方法也可以对 bean 对象进行一些处理操作。 6. bean 对象销毁:当 Spring 容器关闭时,会调用 bean 对象的销毁方法,该方法可以自定义,通过配置文件或注解等方式指定。 需要注意的是,Spring 容器bean 对象都是单例的,即一个 bean 对象只会被创建一次,之后都是从容器获取已经创建好的对象。因此,对于一个 bean 对象,其生命周期只会经历一次上述的阶段。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值