Spring扩展点的注入属性问题?

我想要使用此扩展点,手动构建一个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 直接是怎么解析资源文件内容的,这样你就知道怎么扩展这个功能了
 

img

 

其实底层还是借助的 Resource 流的读取,将资源文件读取过来封装成 PropertySource,然后从在查看每个 BeanDefinition 中是否有 $ 符号,如果有就会用 PropertySource 中的属性值替换调用 $ 占位符,也就是你上面的 ${username} 占位符。