容器:Bean

基础

@Component 和 @Bean 的区别是什么?

作用对象不同: 

@Component 注解作用于类,而@Bean注解作用于方法。

@Component通常是通过类路径扫描来自动侦测以及自动装配到Spring容器中

(我们可以使用 @ComponentScan 注解定义要扫描的路径从中找出标识了需要装配的类自动装配到 Spring 的 bean 容器中)。

@Bean 注解通常是我们在标有该注解的方法中定义产生这个 bean,

@Bean告诉了Spring这是某个类的示例,当我需要用它的时候还给我。

@Bean 注解比 Component 注解的自定义性更强,而且很多地方我们只能通过 @Bean 注解来注册bean。

比如当我们引用第三方库中的类需要装配到 Spring容器时,则只能通过 @Bean来实现。

@Bean注解使用示例:
@Configuration
public class AppConfig {
    @Bean
    public TransferService transferService() {
        return new TransferServiceImpl();
    }
}

上面的代码相当于下面的 xml 配置

<beans>
    <bean id="transferService" class="com.acme.TransferServiceImpl"/>
</beans>

下面这个例子是通过 @Component 无法实现的。

@Bean
public OneService getService(status) {
    case (status)  {
        when 1:
                return new serviceImpl1();
        when 2:
                return new serviceImpl2();
        when 3:
                return new serviceImpl3();
    }
}

将一个类声明为Spring的 bean 的注解有哪些?

我们一般使用 @Autowired 注解自动装配 bean,

要想把类标识成可用于 @Autowired 注解自动装配的 bean 的类,采用以下注解可实现:

@Component :通用的注解,可标注任意类为 Spring 组件。如果一个Bean不知道属于哪个层,可以使用@Component 注解标注。

@Repository : 对应持久层即 Dao 层,主要用于数据库相关操作。

@Service : 对应服务层,主要涉及一些复杂的逻辑,需要用到 Dao层。

@Controller : 对应 Spring MVC 控制层,主要用户接受用户请求并调用 Service 层返回数据给前端页面。

 

参考:

天天用 Spring,bean 实例化原理你懂吗?

Spring IOC 知识点总结,写得太好了!

聊聊Spring Bean实例化

面试官常问的Spring依赖注入和Bean的装配问题,今天给大家讲清楚!

两难!到底用Apache BeanUtils还是Spring BeanUtils?

Spring创建Bean的过程Debug

如何在Spring初始化Bean或销毁Bean前执行某些操作

为什么你写的拦截器中不能注入Java bean?

通过Debug带你详细了解Spring创建Bean的过程,一清二楚!

两难!到底用 Spring BeanUtils 还是 Apache BeanUtils?

如果你每次面试前都要去背一篇Spring中Bean的生命周期,请看完这篇文章

Spring 中的bean 是线程安全的吗?

天天用 Spring,bean 实例化原理你懂吗?

【02期】你能说说Spring框架中Bean的生命周期吗?

Spring 源码探究 : 容器

一次性教你彻底理解 Spring容器和应用上下文

Spring 容器的启动过程

Spring 源码分析(三)容器核心类(系列文章基于Spring 5.0)

Spring 源码分析(二)容器基本用法(系列文章基于Spring 5.0)

天天用 Spring,Bean 实例化原理你懂吗?

 

posted @ 2019-12-03 22:33  弱水三千12138  阅读(240)  评论(0)    收藏  举报