spring 如何为 Environment 找到 bean?

How does spring find bean for Environment?

我有这个正确的代码。而且我不明白 spring 如何找到 Environment 接口的 bean。帮我。谢谢

@Configuration
@ComponentScan(value = "ru.itis")
@PropertySource("application.properties")
public class AppConfig {

    @Autowired
    private Environment environment;

    @Bean
    public NamedParameterJdbcTemplate template() {
        return new NamedParameterJdbcTemplate(dataSource());
    }

    @Bean
    public DataSource dataSource() {
        DriverManagerDataSource dataSource = new DriverManagerDataSource();
        dataSource.setDriverClassName(environment.getProperty("jdbc.driver"));
        dataSource.setUrl(environment.getProperty("jdbc.url"));
        dataSource.setUsername(environment.getProperty("jdbc.username"));
        dataSource.setPassword(environment.getProperty("jdbc.password"));
        return dataSource;
    }
}

该机制在网络上称为 Dependency Injection and you'll find many articles,解释了概念和 Spring 特定细节。基本上,反射用于通过 bean 的名称或 class 在全局应用程序上下文中查找现有的 bean(对象的实例)。

在这种情况下,Spring 默认初始化一个 Environment 实例。如果一个成员被注释为 @Autowired 并且存在一个匹配的 bean,它被 Spring.

注入到 AppConfig 实例中