1.他们所属的接口不同
afterPropertiesSet属于initializingBean
postProcessAfterInitialization属于BeanPostProcessor
2.他们的作用不同
当一个bean实现了initializingBean接口之后,afterPropertiesSet这个方法会在Bean的所有属性被Spring容器设置完毕之后调用,且只有当前bean调用。
当一个bean实现了BeanPostProcessor接口之后,这个类会被注册到一个容器中,当其他类在初始化的时候,会在调用自定义初始化方法之后调用这个类的postProcessAfterInitialization方法。简而言之这个类会在其他普通类之间加载,postProcessAfterInitialization会在其他类实例化的时候执行,但是不会在当前类实例化的时候执行。
使用注意
如果要在当前类初始化的时候执行某段代码,且只执行一次(如连接数据库),那么继承initializingBean接口。如果要在所有类实例化之后执行某段代码,则继承BeanPostProcessor接口