Springboot3.4.x中的@Bean使用

前言

Springboot3.4.x版本中的@Bean新增一个字段defaultCandidate = false,当类型匹配时,基于 Bean 的条件现在将忽略任何不是默认候选者的 Bean

defaultCandidate字段使用

1、 定义一个接口

csharp 复制代码
public interface UserService {

    void add();
}

2、定义一个接口

typescript 复制代码
@Slf4j
public class PersonServiceImpl implements UserService {
    @Override
    public void add() {
        log.info("测试1=============");
    }
}

3、定义一个接口

typescript 复制代码
@Slf4j
public class UserServiceImpl implements UserService {
    @Override
    public void add() {
        log.info("测试=============");
    }
}

4、使用@Bean

typescript 复制代码
@Configuration
public class UserServiceConfig {

    @Bean
    public UserService add() {
        return new UserServiceImpl();
    }

    @Bean(defaultCandidate = false)
    public UserService add1() {
        return new PersonServiceImpl();
    }
}

5、定义一个接口

less 复制代码
@Slf4j
@RestController
public class IndexController {

    @Autowired
    private List<UserService> userServiceList;

    @GetMapping("/hello")
    public String hello() {
        log.info("数据为:{{}}", userServiceList);
        return "success";
    }
}

访问地址

bash 复制代码
 http://ip:端口/hello

输出结果为

只实例化一个

总结

Springboot3.4.x中的@Bean中的defaultCandidate = false,如果存在相同类型的 bean,它就会被忽略

相关推荐
桦说编程23 分钟前
交替打印最容易理解的实现——同步队列
java·后端·设计模式
一块plus1 小时前
1,000 万 DOT 奖励,JAM Prize 邀你共建 Polkadot 下一代基础设施!
javascript·后端·github
Clay2 小时前
nestjs实战 - buildadmin重构后端(初始化mock接口)
javascript·后端
巴厘猫2 小时前
Java开发者新机遇:LangChain4j——在Java中构建LLM应用的利器
java·后端·langchain
逐梦设计2 小时前
基于SpringBoot教师听评课管理系统的设计与实现(毕业设计源码+开题报告+论文+系统部署讲解+答辩指导)
spring boot
科米米2 小时前
demo01 ffmpeg 从usb uvc摄像头读取一张图片
后端
巴厘猫2 小时前
拥抱智能时代:Spring AI:在Spring生态中构建AI应用——深度剖析与实践
java·spring
loop lee2 小时前
【Spring】一文了解SpringMVC的核心功能及工作流程,以及核心组件及注解
java·后端·spring
巴厘猫2 小时前
从零解锁Docker API,玩转容器的“幕后英雄”!
后端·docker·容器
Resean02232 小时前
SpringMVC 6+源码分析(一)初始化流程
java·后端·spring·servlet·springmvc