我尝试从Sping Boot 应用程序中的应用程序属性文件读取数据。
以下代码是我的主类。
@SpringBootApplication(scanBasePackages = "com.fsk.limitservice")
public class LimitServiceApplication {
public static void main(String[] args) {
SpringApplication.run(LimitServiceApplication.class, args);
}
}
以下代码是我的控制器类
@RestController
public class LimitsConfigurationController {
@Autowired
LimitConfiguration limitConfiguration;
@GetMapping("/limits")
public LimitConfiguration retrieveLimitFromConfiguration() {
return new LimitConfiguration(limitConfiguration.getMinimum(), limitConfiguration.getMaximum());
}
}
以下代码是我的组件类
@Component
@ConfigurationProperties("limits-service")
public class LimitConfiguration {
private int minimum;
private int maximum;
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.application.name=limits-service
limits-service.minimum=17
limits-service.maximum=1124
当我单击运行按钮时,我得到以下错误。我如何修复此错误?
4条答案
按热度按时间uxh89sit1#
1.将
@ConfigurationPropertiesScan
添加到限制服务应用程序1.将
@ConstructorBinding
添加到限制配置并删除 @Componenti34xakig2#
如果删除构造函数,则不会抛出异常,因为Spring框架使用setter绑定属性,因此必须为每个属性声明setter。
从Spring 2.2开始,可以通过类路径扫描找到
@ConfigurationProperties
,作为使用@EnableConfigurationProperties
或@Component
的替代方法。要启用扫描,应该将@ConfigurationPropertiesScan
添加到应用程序类中。ht4b089n3#
您可以移除建构函式,并在字段上加入下列注解:
还有,没有必要做
return new LimitConfiguration(limitConfiguration.getMinimum(),limitConfiguration.getMaximum());
这正在示例化一个新的LimitConfiguration,该配置将不会被Spring容器识别。
mccptt674#
看起来LimitConfiguration类被用作数据传输的目的。
LimitConfiguration类应该如下所示