我想要使用此扩展点,手动构建一个BeanDefinition。代码如下:
public void postProcessBeanDefinitionRegistry(BeanDefinitionRegistry registry){
RootBeanDefinition userServiceBeanDefinition = new RootBeanDefinition();
userServiceBeanDefinition.setBeanClass(UserService.class);
// 这里的userName如何才能从属性配置文件中获取???
userServiceBeanDefinition .getPropertyValues().add("userName","${username}");
registry.registerBeanDefinition("userService", userServiceBeanDefinition);
}
建议你看下注解 @PropertySource 直接是怎么解析资源文件内容的,这样你就知道怎么扩展这个功能了
其实底层还是借助的 Resource 流的读取,将资源文件读取过来封装成 PropertySource,然后从在查看每个 BeanDefinition 中是否有 $ 符号,如果有就会用 PropertySource 中的属性值替换调用 $ 占位符,也就是你上面的 ${username} 占位符。