Spring工具类-BeanPostProcessor使用

1、首先自定义类实现BeanPostProcessor接口,根据需要分别实现接口中的两个方法:

2、接口方法:postProcessBeforeInitialization

      当需要有在对象完成初始化之前,需要做的业务逻辑,可以在postProcessBeforeInitialization方法中,写对应的业务逻辑;spring-IOC过程中创建的Bean,都会经过这个方法。

3、接口方法:postProcessAfterInitialization

      当需要有在对象完成初始化之后,需要做的业务逻辑可以在postProcessAfterInitialization方法中实施。

4、案例分享:

      服务自动注册到注册中心:

@Component
public class InitialMediatiator  implements BeanPostProcessor {
    @Override
    public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
        return bean;
    }

    @Override
    public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
        if(bean.getClass().isAnnotationPresent(JasonRpcService.class))
        {
            Method[]  methods=bean.getClass().getDeclaredMethods();
            System.out.println("容器初始化加载开始...");
            for(Method method:methods)
            {
                String key=bean.getClass().getInterfaces()[0].getName()+"."+method.getName();
                BeanMethod  beanMethod=new BeanMethod();
                beanMethod.setBean(bean);
                beanMethod.setMethod(method);
                Mediator.register(key,beanMethod);

            }
        }
        return bean ;
    }
}

你可能感兴趣的:(Spring)