Spring框架中@Bean和@Component注解的区别


Spring支持多种类型的注解,例如@Component、@Controller、@Service、@Repository和@Bean。所有这些注解都位于org.springframework.stereotype包下。

当应用程序中的类使用上述任何注解进行注解时,在项目启动期间,Spring会扫描(使用@ComponentScan)每个类并将类的实例注入到IOC容器中。@ComponentScan的另一个作用是运行带有@Bean注解的方法,并将返回的对象作为bean存储到IOC容器中。

序号关键点@Bean@Component
1
自动检测
它用于显式声明单个bean,而不是让Spring自动声明。
如果任何类使用@Component注解,则它将通过类路径扫描自动检测。
2
Spring容器
即使类在Spring容器之外,也可以创建Bean
如果类在Spring容器之外,则无法创建Bean
3
类/方法级别注解
它是方法级别注解
它是类级别注解
4
@Configuration
只有当类也使用@Configuration注解时才有效
无需
@Configuration注解
5
用例
如果需要基于动态条件的特定实现,则应使用@Bean。
无法基于动态条件编写特定实现

@Component示例

@Component
public class Pizza{

   ........


}

@Bean示例

@Configuration
class AppConfiguration{

   @Bean
   public User getUse(){
      return new User();
   }
}

更新于:2020年9月9日

2万+浏览量

启动你的职业生涯

完成课程获得认证

开始学习
广告