关于Springboot的@Service注入的方式

本文详细介绍了在Spring框架中,服务注入的五种常见方式,包括使用@AutoWire注解、通过@Service指定名称注入、利用@Resource进行精确匹配等,为开发者提供了丰富的选择和实践指导。

1. 最近在写代码过程中发现Service注入的方式原来有这么多种的,所以记录一下这些方式。

2. 最常用的就是这种直接用@AutoWire的方式了:

@Service
public class TestServiceImp implements TestService {
    //
}

@RestController
public class TestController {

    @AutoWired
    private TestService testService;
	
}

3. 当我们用一个interface有多个实现类,然后注入的时候可以这样:

@Service("testService")
public class TestServiceImp implements TestService {
}

@RestController
public class TestController {

    @AutoWired
    private TestService testService; // 这个变量名testService和@Service("")的命名一致
	
}

4. 也可以用@Resource来注入:

@Service("testService")
public class TestServiceImp implements TestService {
}

@RestController
public class TestController {

    @Resource(name = "testService") // 这个值testService和@Service("")的命名一致
    private TestService testService;
	
}

5. 还有,这种简单的方式也是可以的。

@Service
public class TestServiceImp implements TestService {
}

@RestController
public class TestController {

    @AutoWire
    private TestServiceImpl testService;
	
}

 

在Spring Boot中,使用`@Autowired`注解可以方便地注入Map类型对象。当使用`@Autowired`注入Map时,Spring会自动将容器中所有符合Map值类型的Bean注入到该Map中,Map的键是Bean的名称,值是对应的Bean实例。 以下是相关示例代码: ```java // 示例1:在控制器中注入Map @RestController @RequestMapping("") public class ActiveController { @Autowired private Map<String, ActivityBase> activityBaseMap; @GetMapping("") public void test() { System.out.println(activityBaseMap.getClass().getName()); for (Map.Entry<String, ActivityBase> map : activityBaseMap.entrySet()) { System.out.println(map.getKey() + "=========>" + map.getValue().getClass().getName()); } } } ``` 在上述示例中,Spring会自动将容器中所有类型为`ActivityBase`的Bean注入到`activityBaseMap`中,键是Bean的名称,值是对应的`ActivityBase`实例。 ```java // 示例2:在测试类中注入Map package com.service; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import java.util.Map; @Component public class Test { @Autowired private Map<String, MaoService> maoServiceMap; public void sendMap() { this.maoServiceMap.get("cat").say(); } } ``` 此示例中,Spring会将容器中所有类型为`MaoService`的Bean注入到`maoServiceMap`中,同样键是Bean的名称,值是对应的`MaoService`实例。可以通过`maoServiceMap.get("cat")`来获取名为`cat`的`MaoService`实例并调用其`say`方法 [^2][^3]。
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值