1、spring boot 使用@ConfigurationProperties
a) yml配置
b)我们可以定义一个实体类在装载配置文件信息
c)使用
controller中注入
@Autowired private BootdoConfig bootdoConfig;
/** * 删除 */ @PostMapping("/remove") @ResponseBody // @RequiresPermissions("common:remove") public R remove(Long id, HttpServletRequest request) { if ("test".equals(getUsername())) { return R.error(1, "演示系统不允许修改,完整体验请部署程序"); } String fileName = bootdoConfig.getUploadPath() + sysFileService.get(id).getUrl().replace("/files/", ""); if (sysFileService.remove(id) > 0) { boolean b = FileUtil.deleteFile(fileName); if (!b) { return R.error("数据库记录删除成功,文件删除失败"); } return R.ok(); } else { return R.error(); } }
我们还可以把@ConfigurationProperties还可以直接定义在@bean的注解上,这是bean实体类就不用@Component和@ConfigurationProperties了
@SpringBootApplication
public class DemoApplication{
//...
@Bean
@ConfigurationProperties(prefix = "connection")
public ConnectionSettings connectionSettings(){
return new ConnectionSettings();
}
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
然后我们需要使用的时候就直接这样子注入
@RestController
@RequestMapping("/task")
public class TaskController {
@Autowired ConnectionSettings conn;
@RequestMapping(value = {"/",""})
public String hellTask(){
String userName = conn.getUsername();
return "hello task !!";
}
}
如果发现@ConfigurationPropertie不生效,有可能是项目的目录结构问题,你可以通过@EnableConfigurationProperties(ConnectionSettings.class)来明确指定需要用哪个实体类来装载配置信息。