Bean的管理(获取,作用域,第三方Bean)

目录

Bean的获取:

根据name获取bean:Object getBean(String name)

根据类型获取bean: T getBean(Class requiredType)

根据name获取bean(带类型转换):

T aetBean(String name,Class requiredType)

Bean的作用域:

singleton容器内同 名称的 bean 只有一个实例 (单例) (默认)

prototype每次使用该 bean 时会创建新的实例 (非单例)

注意事项默认singleton的bean,在容器启动时被创建,可以使用@Lazy注解来延迟初始化(延迟到第一次使用时)prototype的bean,每一次使用该bean的时候都会创建一个新的实例。实际开发当中,绝大部分的Bean是单例的,也就是说绝大部分Bean不需要配置scope属性。

@Bean


Bean的获取:

默认情况下,Sprin项目启动时,会把bean都创建好放在10C容器中,如果想要主动获取这些bean,可以通过如下方式:

根据name获取bean:
Object getBean(String name)

(bean的名字在默认情况下是类名是字母小写)

SomeBean someBean = (SomeBean) applicationContext.getBean("someBean");
 

这里需要强转是因为用get方法获取到的bean是object类型的。


根据类型获取bean:
<T> T getBean(Class<T> requiredType)

SomeBean someBean = applicationContext.getBean(SomeBean.class);
 


根据name获取bean(带类型转换):

<T> T aetBean(String name,Class<T> requiredType)

SomeBean someBean = applicationContext.getBean("someBean", SomeBean.class);
 

Bean的作用域:

singleton
容器内同 名称的 bean 只有一个实例 (单例) (默认)

prototype
每次使用该 bean 时会创建新的实例 (非单例)

request
每个请求范围内会创建新的实例 (web环境中,了解)

session
每个会话范围内会创建新的实例 (web环境中,了解)

application
每个应用范围内会创建新的实例 (web环境中,了解)

scope:用于设置Bean的作用域!!!

注意事项
默认singleton的bean,在容器启动时被创建,可以使用@Lazy注解来延迟初始化(延迟到第一次使用时)
prototype的bean,每一次使用该bean的时候都会创建一个新的实例。
实际开发当中,绝大部分的Bean是单例的,也就是说绝大部分Bean不需要配置scope属性。

@Bean

可以将第三方引入类交给IOP容器管理

@Configuration
public class AppConfig {

    @Bean
    public SomeBean someBean() {
        return new SomeBean();
    }

    @Bean
    public AnotherBean anotherBean() {
        return new AnotherBean();
    }
}
 
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

W a C

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值