Spring Boot读取配置文件报错:无法自动装配,找不到'int'类型Bean
问题解决:Spring Boot配置注入报错"Could not autowire. No beans of 'int' type found"
问题根源
你的LimitConfiguration类仅定义了带参数的构造函数,Spring容器创建该类Bean时会优先尝试用这个构造函数实例化对象,但构造函数所需的int类型参数在容器中不存在对应Bean,因此抛出找不到int类型Bean的错误。同时@ConfigurationProperties注解依赖无参构造函数+Setter方法完成配置属性注入,缺少无参构造会导致Spring无法正常实例化Bean并注入属性。
解决方法
给LimitConfiguration添加无参构造函数,若不需要手动实例化该类,也可直接替换掉带参数的构造函数:
修改后的LimitConfiguration代码:
@Component @ConfigurationProperties("limits-service") public class LimitConfiguration { private int minimum; private int maximum; // 添加无参构造函数 public LimitConfiguration() { } // 可选:保留带参构造(仅当需要手动创建实例时) public LimitConfiguration(int minimum, int maximum) { this.minimum = minimum; this.maximum = maximum; } public int getMinimum() { return minimum; } public void setMinimum(int minimum) { this.minimum = minimum; } public int getMaximum() { return maximum; } public void setMaximum(int maximum) { this.maximum = maximum; } }
补充说明
- Spring通过
@ConfigurationProperties注入属性的流程是:先调用无参构造创建Bean实例,再通过Setter方法将配置文件中的值赋值给对应字段。 - 若无需手动创建
LimitConfiguration实例,可直接删除带参数的构造函数,仅保留无参构造和Setter方法,更符合Spring属性注入规范。
内容的提问来源于stack exchange,提问作者fsk
相关产品推荐
相关产品推荐

