欢迎光临散文网 会员登陆 & 注册

Spring定义Bean的六种方式

2023-02-17 14:35 作者:一行小诗  | 我要投稿

一、xml 配置文件

这种方式在 SpringMVC 中是常用的方式,Spring 启动时会读取配置文件,并将配置文件中配置好的类加入到 IOC 容器中。

使用 ClassPathXmlApplicationContext() 读取配置并启动一个 Spring IOC 容器。调用容器的 getBean() 方法返回需要的对象。


二、配置类

这种方式比较类似于第一种配置文件,但是这种更效率。

创建一个配置类,配合使用 @Bean 注解,以成员方法的形式返回 Bean 实例。

使用 AnnotationConfigApplicationContext() 读取配置类并启动一个 Spring IOC 容器。调用容器的 getBean() 方法返回需要的对象。


三、扫描包

通过 @ComponentSacn 扫描包形式获取 Bean,被扫描的包下的所有带 @Component 注解的类都会被认为是 Bean。


四、BeanDefinition 构建

编程式使用 BeanDefinition 构建 Bean,前三种方式也是基于底层 BeanDefinition 构建出来的。

这种方式更复杂,也更底层。


五、FactoryBean 构建

使用 FactoryBean 构建特殊 Bean,使用 FactoryBean,Spring 会构建两个 Bean,一个是外层类的类型,一个是返回 Bean 的类型,外层类型是通过 Bean 名字前面加 符号获取。

创建容器后,外层类型作为 Bean 的类型注册到容器中,在调用 getBean() 方法时,默认返回 getObject() 返回的对象。

如果在 Bean 的名字前面加 ,则可以获取到外层类型。

FactoryBean 产生单个 Bean,在 IOC 容器的基础上给 Bean 的实现加上了一个简单工厂模式和装饰模式,是一个可以生产对象和装饰对象的工厂 Bean,由 Spring 管理后,生产的对象是由 getObject() 方法决定的。


六、registerBean 直接注册 Bean

在构建 Bean 时使用 Supplier 初始化 Bean 的参数,当然也可以做一些逻辑操作。Supplier 可以简写到 lambda 表达式。


Spring定义Bean的六种方式的评论 (共 条)

分享到微博请遵守国家法律