首页 > 解决方案 > Spring Boot 不读取属性

问题描述

在主控制器中,我可以读取属性。如果我有一个属性类并尝试访问这些属性或在每个需要属性的类中注入以下值,我将无法这样做。缺什么?我不想将变量传递给主控制器的所有函数。

@SpringBootApplication
@Configuration
public class ApplicationProperties {
    @Autowired
    @Value("${file.location}")
    private String fileLocation;
    
    @Value("${file.name}")
    private String fileName;
    
    /**
     * @return the fileLocation
     */
    @RequestMapping(value="/")
    public String getFileLocation() {
        return fileLocation;
    }
    /**
     * @return the fileName
     */
    @RequestMapping(value="file")
    public String getFileName() {
        return fileName;
    }
}

标签: spring-bootapplication.properties

解决方案


首先,除非该类具有 main 方法,否则您不需要注释 @SpringBootApplication。

其次,您不需要在 fileLocation 上使用 @Autowired 注释,因为 @Value 就足够了。

最后,您需要注释 @RestController 因为它是一个 REST api。

现在:

要么向你的类添加主方法并省略@configuration,否则你需要创建一个带有注释@SpringBootApplication的主类并保留@RestController。


推荐阅读