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 小时前
Agent Skill 是什么?一文讲透 Agent Skill 的设计与实现
前端·后端
怒放吧德德3 小时前
Netty 4.2 入门指南:从概念到第一个程序
java·后端·netty
雨中飘荡的记忆4 小时前
大流量下库存扣减的数据库瓶颈:Redis分片缓存解决方案
java·redis·后端
开心就好20255 小时前
UniApp开发应用多平台上架全流程:H5小程序iOS和Android
后端·ios
悟空码字6 小时前
告别“屎山代码”:AI 代码整洁器让老项目重获新生
后端·aigc·ai编程
小码哥_常6 小时前
大厂不宠@Transactional,背后藏着啥秘密?
后端
奋斗小强6 小时前
内存危机突围战:从原理辨析到线上实战,彻底搞懂 OOM 与内存泄漏
后端
小码哥_常6 小时前
Spring Boot接口防抖秘籍:告别“手抖”,守护数据一致性
后端
心之语歌7 小时前
基于注解+拦截器的API动态路由实现方案
java·后端
None3217 小时前
【NestJs】基于Redlock装饰器分布式锁设计与实现
后端·node.js