Spring注解中@Autowired和@Bean的区别详解

 更新时间:2023年06月16日 09:48:06   作者:南猿北辙  
这篇文章主要详细介绍了Spring注解中@Autowired和@Bean二者有什么区别,文中通过两个注解的使用场景介绍了二者的区别,感兴趣的同学可以参考阅读

先了解下这两个注解各自的使用场景,咱就知道两者的区别了。

1,@Autowired

@Autowired 注释,它可以对类成员变量、方法及构造函数进行标注,完成自动装配的工作。 通过 @Autowired的使用来消除 set ,get方法。在此之前,我们对bean配置属性时,是这么用的

<property name="属性名" value=" 属性值"/>   

通过这种方式来,配置比较繁琐,而且代码比较多。在Spring 2.5 引入了 @Autowired 注释

使用@Autowired的原理:

其实在启动spring IOC时,容器自动装载了一个AutowiredAnnotationBeanPostProcessor后置处理器,当容器扫描到@Autowied、@Resource(是CommonAnnotationBeanPostProcessor后置处理器处理的)或@Inject时,就会在IoC容器自动查找需要的bean,并装配给该对象的属性

2,@Bean

@Bean是一个方法级别上的注解,主要用在@Configuration注解的类里,也可以用在@Component注解(@Controller,@Service,@Repository)的类里。添加的bean的id为方法名@Bean注解是Spring从3.0版本开始引入的

spring的@Bean注解用于告诉方法,产生一个Bean对象,然后这个Bean对象交给Spring管理。产生这个Bean对象的方法Spring只会调用一次,随后这个Spring将会将这个Bean对象放在自己的IOC容器中。

实例:

@Configuration
public class AppConfig {
   @Bean
   public UserService userService() {
        return new UserServiceImpl();
   }
}

等同于以下XML配置:

<beans>
        <bean id="userService" class="com.acme.UserServiceImpl"/>
</beans>

两者区别

@Autowired 可修饰变量和方法,用于完成自动装配(将需要的外部资源注入),自动装配的前提你要先有才能装配(该资源需要存在于IOC容器中),直接引用资源就行。

@Bean 修饰的方法表示初始化一个对象并交由Spring IOC去管理,@Bean 只能和@Component @Repository @Controller @Service @Configration 配合使用。

到此这篇关于Spring注解中@Autowired和@Bean的区别详解的文章就介绍到这了,更多相关@Autowired和@Bean的区别内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 详解如何使用SpringBoot实现下载JSON文件

    详解如何使用SpringBoot实现下载JSON文件

    在 Spring Boot 中实现文件下载功能,可以通过将 JSON 字符串作为文件内容返回给客户端从而实现JSON文件下载效果,下面我们就来看看具体操作吧
    2025-02-02
  • 使用Spring自定义实现IOC和依赖注入(注解方式)

    使用Spring自定义实现IOC和依赖注入(注解方式)

    这篇文章主要介绍了使用Spring自定义实现IOC和依赖注入(注解方式),具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-08-08
  • JavaSE中比较器、深拷贝浅拷贝举例详解

    JavaSE中比较器、深拷贝浅拷贝举例详解

    在Java中一切都可以视为对象,在Java中我们经常使用引用去操作对象,下面这篇文章主要给大家介绍了关于JavaSE中比较器、深拷贝浅拷贝的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2024-07-07
  • 基于IntBuffer类的基本用法(详解)

    基于IntBuffer类的基本用法(详解)

    下面小编就为大家带来一篇基于IntBuffer类的基本用法(详解)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-05-05
  • SpringBoot自动配置特点与原理详细分析

    SpringBoot自动配置特点与原理详细分析

    这篇文章主要介绍了SpringBoot自动配置原理分析,SpringBoot是我们经常使用的框架,那么你能不能针对SpringBoot实现自动配置做一个详细的介绍。如果可以的话,能不能画一下实现自动配置的流程图。牵扯到哪些关键类,以及哪些关键点
    2022-08-08
  • Spring AOP日志框架实现过程图解

    Spring AOP日志框架实现过程图解

    这篇文章主要介绍了Spring AOP日志框架实现过程图解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-09-09
  • Java设计模式之java外观模式详解

    Java设计模式之java外观模式详解

    这篇文章主要介绍了Java设计模式之外观模式(Facade模式)介绍,外观模式(Facade)的定义:为子系统中的一组接口提供一个一致的界面,需要的朋友可以参考下
    2021-09-09
  • 详解在Java中如何优雅的停止线程

    详解在Java中如何优雅的停止线程

    线程,作为并发编程的基础单元,允许程序同时执行多个任务,在Java中,线程可以理解为程序中的独立执行路径,通过使用线程,开发者可以创建更加响应灵敏、效率更高的应用程序,本文小编将给大家介绍一下Java中如何优雅的停止线程,需要的朋友可以参考下
    2023-11-11
  • Springboot轻量级的监控组件SpringbootAdmin

    Springboot轻量级的监控组件SpringbootAdmin

    这篇文章主要为大家介绍了Springboot轻量级的监控组件SpringbootAdmin使用示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-02-02
  • BeanUtils.copyProperties()拷贝id属性失败的原因及解决

    BeanUtils.copyProperties()拷贝id属性失败的原因及解决

    这篇文章主要介绍了BeanUtils.copyProperties()拷贝id属性失败的原因及解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-09-09

最新评论