sxd-spring-21扩展
2022-09-23 16:17:42 3 举报
sxd-spring扩展
作者其他创作
大纲/内容
重写initPropertySources方法@Overrideprotected void initPropertySources() {super.initPropertySources();System.out.println(\"my initPropertySources\");getEnvironment().setRequiredProperties(\"aaa\");// 手动增加环境属性。。需要自定义 MyPropertySourceMyContext myContext = new MyContext();myContext.addElement(\"aaa\
自定义扫描类加载bd可实现动态加载bd
环境变量的提前检查
public class MyClassPathXmlApplicationContext extends ClassPathXmlApplicationContext {public MyClassPathXmlApplicationContext(String... configLocations) {super(configLocations);}/** * 拓展资源加载的实现,手动添加属性值 * AbstractApplicationContext#prepareRefresh() => initPropertySources() */@Overrideprotected void initPropertySources() {super.initPropertySources();System.out.println(\"my initPropertySources\");getEnvironment().setRequiredProperties(\"aaa\");// 手动增加环境属性。。需要自定义 MyPropertySourceMyContext myContext = new MyContext();myContext.addElement(\"aaa\
自定义的时候 传入registernew ClassPathBeanDefinitionScanner(registry)
新增自定义环境变量、新增校验环境变量的校验
自定义增删改beandefinitioninvokeBeanFactoryPostProcessors
完整代码-- xml <bean class=\"com.sunxd.extend.selfBeanDefinitionRegistryPostProcessor.MyBeanDefinitionRegistryPostProcessor\" /><context:component-scan base-package=\"com.sunxd.extend.selfBeanDefinitionRegistryPostProcessor.scan\"/>-- javapublic class MyBeanDefinitionRegistryPostProcessor implements BeanDefinitionRegistryPostProcessor {@Overridepublic void postProcessBeanDefinitionRegistry(BeanDefinitionRegistry registry) throws BeansException {RootBeanDefinition rootBeanDefinition1 = new RootBeanDefinition(ControllerTest.class);registry.registerBeanDefinition(\"controllerTest\
新建类 MyClassPathXmlApplicationContext extends ClassPathXmlApplicationContext
带注解需要依赖注入的 ,手动注册完所有的bean,否则找不到依赖的bean- 实现 BeanDefinitionRegistryPostProcessor重写 postProcessBeanDefinitionRegistry 方法xml 引入 component-san bean
总结=》spring扩展点
普通bean- 实现 BeanDefinitionRegistryPostProcessor重写 postProcessBeanDefinitionRegistry 方法
注册扫描路径的类- 实现 BeanDefinitionRegistryPostProcessor重写 postProcessBeanDefinitionRegistry 方法xml 引入 component-san bean
ClassPathBeanDefinitionScanner
完整代码-- xml <bean class=\"com.sunxd.extend.selfBeanDefinitionRegistryPostProcessor.MyBeanDefinitionRegistryPostProcessor\" /><context:component-scan base-package=\"com.sunxd.extend.selfBeanDefinitionRegistryPostProcessor.scan\"/>-- javapublic class MyBeanDefinitionRegistryPostProcessor implements BeanDefinitionRegistryPostProcessor {@Overridepublic void postProcessBeanDefinitionRegistry(BeanDefinitionRegistry registry) throws BeansException {boolean useDefaultFilters = false;//是否使用默认的filter,使用默认的filter意味着只扫描那些类上拥有Component、Service、Repository或Controller注解的类。String basePackage = \"com.sunxd.extend.selfBeanDefinitionRegistryPostProcessor.bean\
readerContext.getRegistry() -> DefaultListableBeanFactory useDefaultFilters -> truereaderContext.getEnvironment() -> 系统启动时加载的environmentreaderContext.getResourceLoader() -> 启动类 ClasspathXmlApplicationContenxt
prepareRefresh
完整代码-- xml <bean class=\"com.sunxd.extend.selfBeanDefinitionRegistryPostProcessor.MyBeanDefinitionRegistryPostProcessor\" />-- javapublic class MyBeanDefinitionRegistryPostProcessor implements BeanDefinitionRegistryPostProcessor {@Overridepublic void postProcessBeanDefinitionRegistry(BeanDefinitionRegistry registry) throws BeansException {RootBeanDefinition rootBeanDefinition = new RootBeanDefinition(CommonBean.class);registry.registerBeanDefinition(\"commonBean\
0 条评论
回复 删除
下一页