@EnableConfigurationProperties(JDBCProperties.class)
将 ConfigData
注册为Bean,并提供给ConfigurationTest
使用。可将ConfigData
作为参数注入到构造函数和普通函数中 。
@ConfigurationProperties(value = "https://www.huyubaike.com/biancheng/spring.datasource.druid")
修饰的ConfigData
- 可以直接把
ConfigData
当成Bean
使用/*** 可直接被注入*/@Autowiredprivate ConfigData configData;
- 可以用构造函数传入进来
@Data@Configuration@EnableConfigurationProperties(value = https://www.huyubaike.com/biancheng/ConfigData.class )public class ConfigurationTest {private ConfigData configData2;/*** 作为构造函数的参数注入* @param data*/ConfigurationTest(ConfigData data){this.configData2 = data;}
- 也可以作为
@Bean
的方法函数的参数 。只有当前类(ConfigurationTest
)才可/*** 直接作为函数的参数* @param data* @return*/@Bean(name = "configData2")HashMap<String, String> getBean(ConfigData data){return new HashMap<>(0);}
- 可以省略
ConfigData
直接将字段注入到返回结果中 。@Bean@ConfigurationProperties(value = "https://www.huyubaike.com/biancheng/spring.datasource.druid")HashMap<String, String> getBean2(ConfigData data){// 会自动为hashMap赋值,或使用set方法为对象赋值return new HashMap<>();}
EnableConfigurationProperties
注解的内部如下,它导入了一个实现了 ImportBeanDefinitionRegistrar
接口的类 。@Target(ElementType.TYPE)@Retention(RetentionPolicy.RUNTIME)@Documented@Import(EnableConfigurationPropertiesRegistrar.class)
class EnableConfigurationPropertiesRegistrar implements ImportBeanDefinitionRegistrar { @Override public void registerBeanDefinitions(AnnotationMetadata metadata, BeanDefinitionRegistry registry) {registerInfrastructureBeans(registry);ConfigurationPropertiesBeanRegistrar beanRegistrar = new ConfigurationPropertiesBeanRegistrar(registry);// 获得@EnableConfigurationProperties的value指向的对象,并注册 。getTypes(metadata).forEach(beanRegistrar::register); }
【SpringBoot 常用注解的原理和使用】
经验总结扩展阅读
- 弹性分布式数据集 RDD及常用算子
- 淀粉用冷水还是热水
- pytorch、paddlepaddle等环境搭建 深度学习环境搭建常用网址、conda/pip命令行整理
- 之六 2流高手速成记:从SpringBoot到SpringCloudAlibaba
- 三十九 Java开发学习----SpringBoot整合mybatis
- SpringBoot 阶段测试 1
- 三 SpringBoot - Ribbon客户端负载均衡,Zuul网关,Config配置中心
- SpringBoot Starter缘起
- SpringBoot自定义注解+异步+观察者模式实现业务日志保存
- 装配 SpringBoot自动配置流程