bean的管理

一、获取bean

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

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

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

(3)根据name获取bean(带类型转换):<T> T getBean(String name,Class<T> requiredType);

2.注意事项:上述所说的【Spring项目启动时,会把其中的bean都创建好】还会受到作用域及延迟初始化影响,这里主要针对于默认的单例非延迟加载的bean而言。

二.bean作用域

1.spring支持五种作用域,后三种在web环境才生效:

image-20230728145800857

2.可以通过@Scope注解来进行配置作用域:@Scope("pretotype")

3.注意事项:

(1)默认singleton的bean,在容器启动时被创建,可以使用@Lazy注解来延迟初始化(延迟到第一次使用时)。

(2)prototype的bean,每一次使用该bean的时候都会创建一个新的实例。

(3)实际开发当中,绝大部分的Bean是单例的,也就是说大部分Bean不需要配置scope属性。

三、第三方bean

1.@Bean:如果要管理的bean对象来自第三方(不是自定义的),是无法使用@Component及衍生注解声明bean的,就需要使用@Bean注解。

2.若要管理的第三方bean对象,建议对这些bean进行集中分类放置,可以通过@Configuration注解声明一个配置类。

image-20230728152730022

image-20230728152740623

3.注意事项:

(1)通过@Bean注解的name或value属性可以声明bean的名称,如果不指定,默认bean的名称就是方法名。

(2)如果第三方bean需要依赖其他bean对象,直接在bean定义方法中设置形参即可,容器会根据类型自动装配。

posted @ 2023-07-28 15:30  __YJC  阅读(37)  评论(0)    收藏  举报