@ConfigurationProperties的一种写法

如下代码:

1
2
3
4
5
6
7
8
9

@Bean
@ConfigurationProperties("spring.datasource")
public DataSource dataSource(){

    return new DruidDataSource();

}

这种写法会让返回的DataSource Bean与spring.datasource下的配置一一绑定。这是我学习尚硅谷的SpringBoot课程进行查漏补缺时学到的一种写法。实际上让@Configuration注解在方法上,在我看到这个课程前我自己就探索出来了,如下代码所示,但是我当时以为@ConfigurationProperties影响的是参数,而且我在断点中也曾发现过templates是一个长度为零的List。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12

@Configuration
public static class TemplatesPropertiesInternalConfiguration {

    @Bean
    @ConfigurationProperties(prefix = "templates")
    public List<Template> templates(List<Template> templates) {
        return templates;
    }

}

所以我这次决定验证一下该知识点,我实验代码如下:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23

@Configuration
public static class TemplatesPropertiesInternalConfiguration {

    @Bean
    @ConfigurationProperties(prefix = "templates")
    public List<Template> templates() {
        return null;
    }

}

@Configuration
public static class TemplatesPropertiesInternalConfiguration {

    @Bean
    @ConfigurationProperties(prefix = "templates")
    public List<Template> templates() {
        return new ArrayList();
    }

}

我期待这两个方法都能够返回我在配置文件中配置的List<Template>。额,好尴尬,其实我不用实验的,因为我代码中已经在使用这个知识点了,只是这个知识点是我自己摸索出来的:

2021-08-30-20-13-24