如何在springboot中使用@Autowire注解

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第10天,点击查看活动详情

在springboot项目中,有一个非常常用的注解:@Autowired,它表示什么含义内,又是如何使用的呢?我们来小小的研究一下。

autowire,英文含义为"自动装配",在 SpringBoot中,自动装配指的是将 Spring 容器中的 bean 自动的和我们需要这个 bean 的类组装在一起。

使用实例

首先我们创建基础的springboot项目,并创建一个接口/test以及一个组件类MyService,并在接口Controller层引入MyService,如下代码所示:

import org.springframework.stereotype.Component;

@Component
public class MyService {

    public String show() {
        return "我在MyService中";
    }
}
复制代码
import com.springcloud.security.demo.service.MyService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class TestController {

    @Autowired
    MyService myService;

    @GetMapping("test")
    public String sayHello() {
        return myService.show();
    }
}
复制代码

如上代码所示,我们使用@Autowired注解,初次之外,并没有编写其他任何代码来实例化MyService,我们运行程序,并请求接口来看看效果:

image-20220314184505646

如上图,可以看到程序运行正常,并且MyService中的内容被成功的打印了出来。那么该MyService对象是如何实例化的呢?

这就引入了一个较大的概念:依赖注入

关于依赖注入,某乎上有一个非常有意思的例子,大家可以看一下,有助于理解依赖注入要解决的是什么问题,大体策略是什么。

降低耦合,解决程序难以维护的问题。

通常的方式有:构造函数,属性或者工厂模式。

下面跟着代码介绍几种依赖注入的实现方式:构造方法注入,setter方法注入,接口注入。

构造方法注入

image-20220315085624873

setter方法注入

image-20220315085726037

接口注入

image-20220315085830657

springboot中@Autowired使用方法

上述方法使用时,在idea中会有一个黄色波浪线提示:

image-20220315091313729

那么,什么才是推荐的注入方式呢?

springboot中推荐使用构造函数,setter方式来设置。

如下所示:

image-20220315091457268

image-20220315091919837

猜你喜欢

转载自juejin.im/post/7105360870602997791