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();
}
}
广告
数据结构
网络
关系数据库管理系统 (RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP