当前位置: 首页 > news >正文

wap 网站源码北京网站建设 一流

wap 网站源码,北京网站建设 一流,品牌网站建设專註大蝌蚪,网业截屏怎么截目录 BeanFactoryPostProcessor BeanDefinitionRegistryPostProcessor 使用一下Bean工厂后置处理器 定义包扫描范围 定义一个组件Bean 定义一个普通的类 自定义一个组件类实现Bean工厂后处理器 测试类 BeanFactoryPostProcessor 该接口是Spring提供的扩展点之一是一个…

目录

BeanFactoryPostProcessor

BeanDefinitionRegistryPostProcessor

使用一下Bean工厂后置处理器

定义包扫描范围

定义一个组件Bean

定义一个普通的类

自定义一个组件类实现Bean工厂后处理器

测试类


BeanFactoryPostProcessor

  • 该接口是Spring提供的扩展点之一
  • 是一个函数式接口,只有一个抽象方法
  • Spring会在合适的时机执行方法回调,并将bean工厂作为参数传递进去

既然把ConfigurableListableBeanFactory类型的bean工厂传递过来了,那么该类型中的方法我是不是就可以为所欲为地为自己所用了啊

package org.springframework.beans.factory.config;import org.springframework.beans.BeansException;// 函数式接口
@FunctionalInterface
public interface BeanFactoryPostProcessor {// 参数为bean工厂void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException;}

BeanDefinitionRegistryPostProcessor

  • 是BeanFactoryPostProcessor的子接口
  • 自身提供了一个将BeanDefinitionRegistry作为参数传递进来的方法

把BeanDefinitionRegistry传递过来了,BeanDefinitionRegistry是用来管理BeanDefinition的,提供了一系列操作BeanDefinition的方法,那么我就可以操作Spring容器中的BeanDefinition了

package org.springframework.beans.factory.support;import org.springframework.beans.BeansException;
import org.springframework.beans.factory.config.BeanFactoryPostProcessor;// 继承了BeanFactoryPostProcessor
public interface BeanDefinitionRegistryPostProcessor extends BeanFactoryPostProcessor {// 将BeanDefinitionRegistry作为参数void postProcessBeanDefinitionRegistry(BeanDefinitionRegistry registry) throws BeansException;}

使用一下Bean工厂后置处理器

定义包扫描范围

package spring.demo;import org.springframework.context.annotation.ComponentScan;// 扫描spring.demo及其子包
@ComponentScan("spring.demo")
public class SpringConfig {
}

定义一个组件Bean

package spring.demo;import org.springframework.stereotype.Component;// 这里添加了@Component注解
// Spring容器启动过程中通过ConfigurationClassPostProcessor解析@Component注解,将Cat类的BeanDefinitoon放入容器中
@Component
public class Cat {
}

定义一个普通的类

package spring.demo;// Dog类只是一个普通的Java类,没加任何注解
public class Dog {
}

自定义一个组件类实现Bean工厂后处理器

package spring.demo;import org.springframework.beans.BeansException;
import org.springframework.beans.factory.config.BeanDefinition;
import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
import org.springframework.beans.factory.support.BeanDefinitionRegistry;
import org.springframework.beans.factory.support.BeanDefinitionRegistryPostProcessor;
import org.springframework.beans.factory.support.GenericBeanDefinition;
import org.springframework.stereotype.Component;@Component
public class CustomBeanDefinitionRegistryPostProcessor implements BeanDefinitionRegistryPostProcessor {@Overridepublic void postProcessBeanDefinitionRegistry(BeanDefinitionRegistry registry) throws BeansException {// Dog类只是一个普通的类// 在这里我通过Spring的回调拿到BeanDefinitionRegistry// 通过BeanDefinitionRegistry将Dog类的定义信息放入Spring容器中GenericBeanDefinition beanDefinition = new GenericBeanDefinition();beanDefinition.setBeanClass(Dog.class);registry.registerBeanDefinition("dog", beanDefinition);}@Overridepublic void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException {// Spring回调将beanFactory传递过来// 这里通过beanName从beanFactory中获取到对应的BeanDefinition信息BeanDefinition catBeanDefinition = beanFactory.getBeanDefinition("cat");String beanClassName = catBeanDefinition.getBeanClassName();// 这里打印出:spring.demo.CatSystem.out.println(beanClassName);}
}

测试类

package spring.demo;import org.springframework.context.annotation.AnnotationConfigApplicationContext;public class SpringMain {public static void main(String[] args) {// 启动Spring容器AnnotationConfigApplicationContext applicationContext = new AnnotationConfigApplicationContext(SpringConfig.class);// 从容器中获取beanName为cat的beanObject catBean = applicationContext.getBean("cat");// 这里打印出:spring.demo.Cat@4310d43System.out.println(catBean);// 从容器中获取beanName为cat的beanObject dogBean = applicationContext.getBean("dog");// 这里打印出:spring.demo.Dog@54a7079eSystem.out.println(dogBean);}
}

http://www.dtcms.com/a/559514.html

相关文章:

  • 装修网站怎么做的做网站界面用什么软件
  • 猎头公司网站建设方案长沙 网站建设公司
  • 建设网站必须要配置apache吗芜湖市建设工程网站维护公告
  • 撤销网站备案申请书南宁网站建设 传导
  • seo查询站长工具山东省城乡住房和建设厅网站首页
  • 网站ui需求如何用discuz做网站
  • 建工网站wordpress使用阿里云cdn
  • 什么是a站赚钱链接网站
  • 网站建设流程行情网站制作公司前景
  • 免费在线响应式网站自助建站平顶山公司做网站
  • 学做网站是什么wordpress 自动分页
  • 网站开发环境lmnp电脑可以做服务器部署网站吗
  • 神兵网站建设广州app开发定制公司
  • 网站建设业务前景手机app开发工具有哪些
  • 个人租车网站源码百度推广技巧方法
  • 天津大型网站建设报价公司wordpress默认登录页修改
  • 挂号网站建设国外的网站服务商
  • 扁平化购物网站模板wordpress 去除右边
  • 金华网站制作营销柞水县城乡建设局网站
  • 重庆科技网站建设免备案php网站空间
  • 打开网站访问慢网站空间后台
  • 平安网站建设发挥了积极的作用用自己点电脑做电影网站
  • 网站切图怎么切如何建设万网网站
  • 驻马店哪家做网站好试题wordpress的特点
  • 个人空间备案网站名称找源码的网站
  • 珠海网站建设哪家公司好工作室起名大全免费取名
  • 苏州高端网站建设做网站如何与腾讯合作
  • 大连网站建设是什么wordpress图床插件
  • 如何将网站做成app广西南宁网站策划
  • 如何给网站添加iconwordpress手机访问排版乱