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,它就会被忽略

相关推荐
雪隐2 小时前
个人电脑玩AI-16让5060 Ti给你打工——MiniMax H3 提速实录:从"泡杯茶等视频"到"视频等你",一张 5060 Ti 的自我修养
前端·人工智能·后端
952362 小时前
Sentinel
java·后端·spring·sentinel·springcloud
名字还没想好☜2 小时前
Go 的 sync.Cond 实战:用条件变量做等待/通知,比忙轮询省 CPU
开发语言·数据库·后端·golang·go
zzzll11113 小时前
Spring Boot 入门指南:从零开始构建微服务
spring boot·后端·微服务
运维行者_3 小时前
企业带宽监控工具实战:网络流量分析与异常排查的5个关键能力
运维·服务器·开发语言·网络·分布式·后端·php
用户3126874877203 小时前
你的定时任务真的靠谱吗?Spring Boot @Scheduled 全链路拆解
spring boot
长栎3 小时前
你用了五年的消息队列,不知道它背后站着中介者模式
后端
Gopher_HBo3 小时前
路由注册:RouterGroup(routergroup.go)
后端
用户608186527903 小时前
Avalonia UI 控件样式定义的三种方式详解
后端
feng尘3 小时前
volatile 可见性与内存屏障知识点
后端