通过Spring注解注册Bean的四种方式

本文详细介绍了通过Spring注解注册Bean的四种方式:包扫描+组件标注注解,@Bean注解,@Import注解以及使用FactoryBean。@ComponentScan用于指定包扫描范围,@Bean用于自定义注册对象,@Import允许导入更多Bean,而FactoryBean则提供了更灵活的创建对象方式。每种方式都有其特定的使用场景和配置细节。
摘要由CSDN通过智能技术生成


给spring容器中注册bean有四种通过注解的方式:

  1. 包扫描+组件标注注解
  2. @Bean
  3. @Import
  4. 使用FactoryBean(工厂Bean)

下面逐个介绍他们的用法:

包扫描+组件标注注解

这种方式使我们最为常见的一种,通过两类注解配合使用。

@ComponentScan注解用来标在配置类的上方,表示了需要对哪些包进行扫描。也可以通过excludeFilters属性来指明那些类型是不被扫描的组件。

第二类注解是指@Controller/@Service/@Repository/@Component四个中的一个,这些注解一般标在自己写的类的上方,表示他们是需要注册到spring容器中的。

@Bean注解

有时候我们需要将一些类,不属于我们编写的类注册进spring容器当中,这时候我们不能再通过上面那种方式,而是需要在注解类中的方法上面加上@Bean注解,这样就会将该方法所返回的对象注册进spring容器当中。

spring中注册时实例默认是单实例的,即singleton。在ioc容器启动会调用方法创建对象放到ioc容器中。以后每次获取就是直接从容器(map.get())中拿。

当我们在@Bean注解相同位置再添加一个@Scope(“prototype”)注解时,它表示Bean是多实例的:ioc容器启动并不会去调用方法创建对象放在容器中。每次获取的时候才会调用方法创建对象。

当然,我们也可以通过@Lazy注解加在@Bean注解相同位置来表示懒加载,这样即使是默认情况下的单例,容器启动的时候创建对象,也会变成容器启动不创建对象。第一次使用(获取)Bean创建对象,并初始化。

@Import注解

@Import注解使用时直接标注在配置类的上方,表示向Spring容器中注册哪些Bean。其中的value属性可以传入三种类型的值,分别是:直接类对象、ImportSelector和ImportBeanDefinitionRegistrar。

直接传入类对象就表示注册这些Bean;

传入ImportSelector的实现类,需要实现其中的selectImports()方法,返回的字符串数组表示要注册进容器中的Bean。例如:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值