springboot中service的注入方式

一、当有一个实现类时@Service

@Service    //将该service注入到容器
public class TestDemoImp implements TestDemo{
    //

}
@RestController    //控制器注解
public class TestController{
   
    @AutoWired     //自动导入bean,按name导入
    private TestDemo testDemo;
}

 

二、当有多个实现类时@Service(" name ")

@Service("testDemo")
public class TestDemoImp implements TestDemo{
    //

}
@RestController
public class TestController{
   
    @AutoWired
    private TestDemo testDemo;//此变量名与@Service(" ")相同
}

 

三、当有多个实现类时@Resource("name")

@Service("testDemo")
public class TestDemoImp implements TestDemo{
    //

}
@RestController
public class TestController{
   
    @Resource("name=testDemo")//此name值与@Service(" ")相同
    private TestDemo testDemo;
}

四、@Resource和@Autowire的区别

此项可以参考@Resource与@Autowire注解的区别,此文十分清晰的解释了两注解的关系。

### Spring Boot 依赖注入的方法种类 #### 构造器注入 构造器注入是在创建对象时通过构造函数传递其依赖项。这种方式能够确保不可变性和线程安全性,同时也便于单元测试。 ```java @Service public class MyService { private final Dependency dependency; @Autowired public MyService(Dependency dependency) { this.dependency = dependency; } } ``` 这种方法通常推荐用于必需的依赖关系[^3]。 #### Setter方法注入 Setter方法注入允许在实例化之后设置属性值。这适用于那些可能为空或可选的依赖项。 ```java @Service public class MyService { private Dependency dependency; @Autowired public void setDependency(Dependency dependency) { this.dependency = dependency; } } ``` 此方式适合于非强制性的依赖关系,在某些情况下可以不初始化这些依赖项[^1]。 #### 字段注入 字段注入是最简单直接的一种形式,只需在一个成员变量上标注`@Autowired`即可完成自动装配过程。 ```java @Service public class MyService { @Autowired private Dependency dependency; // Other methods... } ``` 尽管方便快捷,但是这种做法不利于编写单元测试代码,并且违反了面向接口编程的原则[^5]。 #### 接口注入(较少见) 除了上述三种常见的方式外,还存在一种较为少见的形式——接口注入。不过由于其实现复杂度较高以及灵活性较差等原因,在实际开发过程中很少被采用。 对于@Autowired,默认会按照类型匹配Bean并进行注入;如果同种类型的多个Bean,则还需要配合使用@Qualifier注解来指定具体的Bean名称[^2]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值