我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Spring自动装配@Autowired教程

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Spring自动装配@Autowired教程

今天来跟大家聊聊简单聊聊@Autowired,Autowired翻译过来为自动装配,也就是自动给Bean对象的属性赋值。

@Target({ElementType.CONSTRUCTOR, ElementType.METHOD, 
         ElementType.PARAMETER, ElementType.FIELD, 
         ElementType.ANNOTATION_TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface Autowired {
	
	boolean required() default true;
}

以上是@Autowired的定义,重点看 @Target,我们发现@Autowired可以写在:

  • ElementType.CONSTRUCTOR:表示可以写在构造方法上
  • ElementType.METHOD:表示可以写在普通方法上
  • ElementType.PARAMETER:表示可以写在方法参数前
  • ElementType.FIELD:表示可以写在属性上
  • ElementType.ANNOTATION_TYPE:表示可以写在其他注解上

写在构造方法上

对于@Autowired写在构造方法上的情况,跟Spring选择构造方法的逻辑有关,一个类中是不是有多个构造方法,是不是加了@Autowired注解,是不是有默认构造方法,跟构造方法参数类型和个数都有关系,后面单独来介绍。

写在普通方法上

对于@Autowired写在普通方法上的情况,我们通常写的setter方法其实就是一个普通的setter方法,那非setter方法上加@Autowired会有作用吗?

比如:

@Component
public class UserService {
	@Autowired
	public void test(OrderService orderService) {
		System.out.println(orderService);
	}
}

这个test方法会被Spring自动调用到,并且能打印出OrderService对应的Bean对象。

写在方法参数前

把@Autowired写在参数前没有多大意义,只在spring-test中有去处理这种情况,源码注释原文:

Although @Autowired can technically be declared on individual method or constructor parameters since Spring Framework 5.0, most parts of the framework ignore such declarations. The only part of the core Spring Framework that actively supports autowired parameters is the JUnit Jupiter support in the spring-test module

写在属性上

这种情况不用多说了,值得注意的是,默认情况下,因为@Autowired中的required属性为true,表示强制依赖,如果更加某个属性找不到所依赖的Bean是不会赋null值的,而是会报错,如果把required属性设置为false,则会赋null值。

写在其他注解上

比如我们可以自定义要给注解:

@Autowired
@Retention(RetentionPolicy.RUNTIME)
public @interface HoellerAutowired {
}

@HoellerAutowired和@Autowired是等价的,能用@Autowired的地方都可以用@HoellerAutowired代替。

到此这篇关于Spring自动装配@Autowired教程的文章就介绍到这了,更多相关Spring @Autowired内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Spring自动装配@Autowired教程

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Spring自动装配@Autowired教程

@Autowired注解是Spring中非常重要且常见的,接下来就简要的介绍一下它的用法。@Autowired默认是通过set方法,按照类型自动装配JavaBean,set方法可省略不写,它主要是修饰在成员变量上
2023-01-28

怎么用Spring @Autowired实现自动装配

本篇内容主要讲解“怎么用Spring @Autowired实现自动装配”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么用Spring @Autowired实现自动装配”吧!学习自动装配之前,讲
2023-06-22

Spring@Autowired注解与自动装配的示例分析

这篇文章主要介绍了Spring@Autowired注解与自动装配的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。1 配置文件的方法我们编写spring 框架的代码时候
2023-05-31

Spring Boot实战教程之自动配置详解

前言大家应该都有所了解,随着Ruby、Groovy等动态语言的流行,相比较之下Java的开发显得格外笨重。繁多的配置、低下的开发效率、复杂的部署流程以及第三方技术集成难度大等问题一直被人们所诟病。随着Spring家族中的新星Spring B
2023-05-31

Spring如何实现自动装配

这篇文章将为大家详细讲解有关Spring如何实现自动装配,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。Spring之自动装配,所谓自动装配,从字面解读,我想应该不难理解吧(当然不是诱导读者去咬文嚼字)。那
2023-06-17

Spring Boot自动装配原理(易懂)

Spring Boot的自动装配原理(易懂) 熟练使用Spring Boot那么自动装配原理的掌握是必不可少的 文章目录 Spring Boot的自动装配原理(易懂)一、自动装配是什么二、启动类注解流程关系分析1.首先展示
2023-08-19

Spring基于xml实现自动装配流程详解

自动装配是使用spring满足bean依赖的一种方法,spring会在应用上下文中为某个bean寻找其依赖的bean,Spring中bean有三种装配机制,分别是:在xml中显式配置、在java中显式配置、隐式的bean发现机制和自动装配
2023-01-03

Spring Bean自动装配入门到精通

自动装配是使用spring满足bean依赖的一种方法,spring会在应用上下文中为某个bean寻找其依赖的bean,Spring中bean有三种装配机制,分别是:在xml中显式配置、在java中显式配置、隐式的bean发现机制和自动装配
2022-11-13

spring的自动装配原理是什么

Spring的自动装配原理是通过Spring容器扫描应用程序中的组件,并根据一些规则自动将这些组件进行装配。实际上,Spring容器会根据注解或配置文件等方式来确定组件之间的依赖关系,并在容器初始化的过程中自动将这些依赖关系进行装配。具体而
2023-09-27

Spring框架基于xml实现自动装配流程详解

自动装配就是指 Spring 容器在不使用 <constructor-arg> 和<property> 标签的情况下,可以自动装配(autowire)相互协作的 Bean 之间的关联关系,将一个 Bean 注入其他 Bean 的 Property 中
2022-11-13

Spring装配Bean之如何实现组件扫描和自动装配

这篇文章给大家分享的是有关Spring装配Bean之如何实现组件扫描和自动装配的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。Spring从两个角度来实现自动化装配:组件扫描:Spring会自动发现应用上下文中所创
2023-05-31

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录