Spring boot 3系列6:配置(Configuration)
李明明架构师Spring Boot 3系列第6课: 配置(Configuration)
本教程将教大家如果用Spring boot 配置文件,以及如何读取配置文件中的配置。
教程源码环境:
jdk21
spring boot 3.2.4
创建Spring boot 3项目可以看这篇博客:
https://botongcode.com/note/1713015843406由于application.properties至少国内使用率不高
我们现在直接删除
然后添加application.yml
现在我们新增UploadConfig类
@Configuration
@ConfigurationProperties(prefix = "upload")
public class UploadConfig {
private String path;
private String extensions;
public String getPath() {
return path;
}
public void setPath(String path) {
this.path = path;
}
public String getExtensions() {
return extensions;
}
public void setExtensions(String extensions) {
this.extensions = extensions;
}
}
这是一种读配置的方式
这种方式我们可以将此前缀下所有的属性读出
DemoApplication要声明一下
@SpringBootApplication
@EnableConfigurationProperties(UploadConfig.class)
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
现在将之前的UploadController增加一个接口:
@RestController
public class UploadController {
private static final Logger log = LoggerFactory.getLogger(UploadController.class);
private final Path root = Paths.get("d:\\uploads");
@Autowired
UploadConfig uploadConfig;
@PostMapping("upload")
String upload(@RequestParam("file") MultipartFile file) {
try {
Files.copy(file.getInputStream(),
this.root.resolve(file.getOriginalFilename()));
return "success";
} catch (IOException e) {
log.error(e.getMessage());
}
return "fail";
}
@GetMapping("upload/config")
Map<String, String> config() {
Map<String, String> map = new HashMap<>();
map.put("path", uploadConfig.getPath());
map.put("extensions", uploadConfig.getExtensions());
return map;
}
}
现在我们运行一下,看看读到的配置。
还有一种读配置的方式是@Value, 这种读一个属性。
@Configuration
public class SiteConfig implements WebMvcConfigurer {
@Value("upload.path")
String path;
}
接下来,我们来讲讲3.x 与2.x一些配置项的变化
Spring boot 3标志着一个重要的里程碑,对其核心组件进行了几项重要的修改。
配置属性
修改了某些属性键:
spring.redis 已移至 spring.data.redis
spring.data.cassandra 已移至 spring.cassandra
spring.jpa.hibernate.use-new-id-generator 已删除
server.max.http.header.size 已移至 server.max-http-request-header-size
spring.security.saml2.relyingparty.registration。删除了 {id}.identity-provider 支持、
为了识别这些属性,我们可以在pom.xml中添加spring-boot-properties-migrator:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-properties-migrator</artifactId>
<scope>runtime</scope>
</dependency>
最新版本的spring-boot-properties-migrator可怜人Maven Central获得。
==============================
OK,大家有什么不懂的可以加QQ群讨论。
也可以直接在评论区交流
看到会回复。
Q群:559722761
微信群:
抖音|B站|小红书:李明明-架构师