李明明架构师
English

Spring boot 3系列6:配置(Configuration)

liming

李明明架构师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

applicaiton.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;   } }

现在我们运行一下,看看读到的配置。

reading configs

还有一种读配置的方式是@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

微信群:

group qr

抖音|B站|小红书:李明明-架构师