Spring常见的三种注入方式

这篇具有很好参考价值的文章主要介绍了Spring常见的三种注入方式。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1 三种常用的依赖注入方式

  • 基于构造器的依赖注入
  • 基于Setter的依赖注入
  • 基于字段变量的依赖注入

(当然还有其它不常用的注入方式:静态工厂方法注入、动态工厂方法注入)

2 各个依赖注入的实现方式

2.1 构造器注入

    private final InventoryMapper inventoryMapper;
 
    public InventoryController(InventoryMapper inventoryMapper) {
        this.inventoryMapper = inventoryMapper;
    }

2.2 Setter注入

	private InventoryMapper inventoryMapper;
	 
	public void setInventoryMapper(InventoryMapper inventoryMapper) {
	    this.inventoryMapper = inventoryMapper;
	}

2.3 字段变量注入

字段变量注入是基于注解实现的,即@Resource或者@Autowired,

    @Autowired
    private InventoryMapper inventoryMapper;

@Autowired:表示自动注入,自动从spring的上下文找到合适的bean来注入

@Resource:表示按指定名称注入,@Resource 可以通过 byName 和 byType的方式注入, 默认先按 byName的方式进行匹配,如果匹配不到,再按 byType的方式进行匹配。 当然,还可以为 @Service和@Resource 添加 name 这个属性来区分不同的实现。

@Component:表示一种泛指,被标记类即组件,Spring扫描注解配置时,会标记这些类要生成对应的bean。

@Qualifier和@Autowired配合使用,当一个接口有多个实现的时候,@Qualifier的value定了具体调用哪个类的实现(需要在实现类中通过@Service来表示每个不同的bean),也就是说指定了注入bean的名称。

Controller、Service、、Repository分别作用类是控制层类、业务层类、数据访问层类,Spring扫描注解配置时,会标记这些类要生成对应的bean。

@Autowired和@Resource是用来修饰字段,构造函数,或者方法,其作用是注入bean。而@Service,@Controller,@Repository,@Component则是用来修饰类,标记这些类要生成bean。

2.4 基于字段变量的依赖注入

优点:基于字段变量的依赖注入方式非常简洁,没有任何多余代码,有效的提高了Java的简洁性。

缺点:不能指明具体的依赖。可能会遇见依赖注入的对象为null,所以这种方式过于依赖注入容器,当没有启动整个依赖容器时,这个类就不能运转,在反射时无法提供这个类需要的依赖。

如果使用基于Setter的依赖注入方式,它是一种选择性注入,可有可无的,即使没有注入这个依赖,也不会影响整个项目的运行。

如果基于构造器的依赖注入方式,它是一种强制性的,显示的注入。通过显示指明依赖注入来保证整个项目的运行。

3 依赖注入的理解

首先了解关于注入的两个概念IOC(控制反转)和DI(依赖注入),简单的说,IoC是一种思想,而DI则是一种行为。也可以说IoC是目的,DI是手段。IoC是指让生成类的方式由传统方式(new)反过来,开发程序时不需要调用new,当需要使用某个类的时候由框架来注入(DI)即可。文章来源地址https://www.toymoban.com/news/detail-484273.html

到了这里,关于Spring常见的三种注入方式的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • Docker——常用挂载的三种方式

    在 Docker 中,有三种常见的挂载方式,它们分别是: 绑定挂载(Bind Mounts) :绑定挂载是将主机上的文件或目录挂载到容器中。这种挂载方式允许容器与主机之间共享文件和目录,并且对其中一个的更改会直接影响到另一个。可以通过在运行容器时使用  -v  或  --mount  参数

    2024年02月12日
    浏览(10)
  • Spring的三种异常处理方式

    Spring的三种异常处理方式

            异常分为编译时异常和运行时异常,编译时异常我们 try-cache 进行捕获,捕获后自行处理,而运行时异常是不 可预期的,就需要规范编码来避免,在SpringMVC 中,不管是编译异常还是运行时异常,都可以最终由 SpringMVC提供的异常处理器进行统一处理,这样就避免了

    2024年02月12日
    浏览(12)
  • Spring 创建 Bean 的三种方式

    在使用 Spring 框架后,对象以 Bean 的形式统一交给 IOC 容器去创建和管理。现阶段主流的方式是基于 SpringBoot 框架,基于注解的方式实现 Bean 的创建,但在原生 Spring 框架中其实存在三种创建 Bean 的方式。 BeanProcess 实体类,虽然加了 @Component 等三个注解,但只在注解方式创建

    2024年02月14日
    浏览(9)
  • Spring Boot 禁用 Swagger 的三种方式

    Spring Boot 禁用 Swagger 的三种方式

    禁用方法1: ====== 使用注解 @Value() 推荐使用 package com.dc.config; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; impo

    2024年04月22日
    浏览(16)
  • spring中bean实例化的三种方式 -- Spring入门(二)

    spring中bean实例化的三种方式 -- Spring入门(二)

    为了巩固所学的知识,作者尝试着开始发布一些学习笔记类的博客,方便日后回顾。当然,如果能帮到一些萌新进行新技术的学习那也是极好的。作者菜菜一枚,文章中如果有记录错误,欢迎读者朋友们批评指正。 (博客的参考源码以及可以在我主页的资源里找到,如果在学

    2024年02月16日
    浏览(11)
  • spring boot请求http接口的三种方式

    HttpURLConnection 是 Java 中的 HTTP 客户端实现,,适用于简单的请求需要。 HttpURLConnection主要工作内容:打开socket连接,封装http请求报文,解析请求报文。 OkHttp 是一个第三方的 HTTP 客户端库,它比 Java 标准的 HttpURLConnection 更高效、更实用。主要特点包括: 比 HttpURLConnection 快得多

    2024年02月14日
    浏览(9)
  • 还原Sql Server数据库BAK备份文件的三种方式及常见错误

    还原Sql Server数据库BAK备份文件的三种方式及常见错误

    这是演示的是Sql Server 2008R2版本,不同版本可能有细微差别 右键点击数据库→还原数据库    在还原的源中选择源设备→点击选择框  在指定备份中点击添加→选择具体文件→确定→确定  勾选用于还原的备份集→这时目标数据库中会自动生成目标数据库名,在此选择即可→

    2023年04月08日
    浏览(37)
  • Spring Boot获取resources目录下的文件的三种方式

    在Spring Boot项目中,经常需要获取 resources 目录下的文件。这些文件可以包括配置文件、模板文件、静态资源等。本文将介绍三种常用的方法来获取 resources 目录下的文件。 ResourceLoader 接口是Spring框架提供的用于加载各种资源的接口,包括 classpath 下的资源。在Spring Boot中,可

    2024年02月16日
    浏览(13)
  • 前端常用的三种加密方式(MD5、base64、sha.js)

    前端常用的三种加密方式(MD5、base64、sha.js)

    作为一名优秀的前端开发工程狮,保障用户的信息安全、密码义不容辞,废话不多说,由我来介绍三种日常开发中经常用到的加密方式。 介绍: MD5中文含义为信息-摘要算法5,就是一种信息摘要加密算法,可以将数据转译为另一固定长度值 特点: 压缩性:任意长度的数据,

    2024年02月06日
    浏览(11)
  • 【spring Cloud】微服务通信的三种方式RestTemplate、Feign远程调用与Dubbo的使用

    目录 一、通过RestTemplate调用微服务 二、通过Feign远程调用 三、Dubbo  分布式中的远程调用大概分为两种 RESTful接口  REST,即Representational State Transfer的缩写,如果一个架构符合REST原则,就称它为RESTful架构。 每一个URI代表一种资源; 客户端和服务器之间,传递这种资源的某种

    2024年04月11日
    浏览(10)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包