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的区别内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Mybatis-Mapper.xml文件前缀详解

    Mybatis-Mapper.xml文件前缀详解

    这篇文章主要介绍了Mybatis-Mapper.xml文件前缀,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-09-09
  • Idea2023创建springboot不能选择java8的解决方法(最新推荐)

    Idea2023创建springboot不能选择java8的解决方法(最新推荐)

    在idea2023版本创建springboot的过程中,选择java版本时发现没有java8版本,只有java17和java20,遇到这样的问题如何解决呢,下面小编给大家分享Idea2023创建springboot不能选择java8的解决方法,感兴趣的朋友一起看看吧
    2024-01-01
  • Java内存缓存工具Guava LoadingCache使用解析

    Java内存缓存工具Guava LoadingCache使用解析

    这篇文章主要介绍了Java内存缓存工具Guava LoadingCache使用解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-01-01
  • ByteArrayInputStream简介和使用_动力节点Java学院整理

    ByteArrayInputStream简介和使用_动力节点Java学院整理

    ByteArrayInputStream 是字节数组输入流。它继承于InputStream。这篇文章主要介绍了ByteArrayInputStream简介和使用_动力节点Java学院整理,需要的朋友可以参考下
    2017-05-05
  • java学习笔记之DBUtils工具包详解

    java学习笔记之DBUtils工具包详解

    下面小编就为大家分享一篇java学习笔记之DBUtils工具包详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-01-01
  • 用java WebSocket做一个聊天室

    用java WebSocket做一个聊天室

    这篇文章主要为大家详细介绍了用java WebSocket做一个聊天室,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-10-10
  • Spring Boot整合Thymeleaf详解

    Spring Boot整合Thymeleaf详解

    这篇文章主要介绍了Spring Boot整合Thymeleaf详解,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-08-08
  • Java基础之FileInputStream和FileOutputStream流详解

    Java基础之FileInputStream和FileOutputStream流详解

    这篇文章主要介绍了Java基础之FileInputStream和FileOutputStream流详解,文中有非常详细的代码示例,对正在学习java基础的小伙伴们有非常好的帮助,需要的朋友可以参考下
    2021-04-04
  • Java使用Redisson分布式锁实现原理

    Java使用Redisson分布式锁实现原理

    Redisson分布式锁 之前的基于注解的锁有一种锁是基本redis的分布式锁,这篇文章主要介绍了Java使用Redisson分布式锁实现原理,非常具有实用价值,需要的朋友可以参考下
    2018-10-10
  • SpringBoot通过yml和xml文件配置日志输出方法

    SpringBoot通过yml和xml文件配置日志输出方法

    这篇文章主要介绍了SpringBoot通过yml和xml文件配置日志输出方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-04-04

最新评论