我正在编写自己的 BeanPostProcessor ,因此在 eclipse Oxygen 和 java 9 基础结构中创建一个实现 BeanPostProcessor 接口(interface)的类。
现在的问题是 - 编译器不允许我对方法使用 @Override 注释 - postProcessBeforeInitialization(Object,String)
和 postProcessAfterInitialization(Object,String)
。为什么?而且即使我没有在类中提供这些方法的实现,我也不会收到违反接口(interface)规则的编译器投诉。我的意思是我应该得到编译器错误告诉我必须实现接口(interface)方法。但不是。为什么?请指导我。
最佳答案
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.config.BeanPostProcessor;
public class DisplayNameBeanPostProcessor implements BeanPostProcessor {
@Override
public Object postProcessBeforeInitialization(Object bean, String beanName)
throws BeansException {
System.out.println("Before "+bean.getClass() + " " + beanName);
return bean;
}
@Override
public Object postProcessAfterInitialization(Object bean, String beanName)
throws BeansException {
System.out.println("After "+bean.getClass() + " " + beanName);
return bean;
}
}
编译器将允许您使用@Override。
@Nullable
default Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
return bean;
}
在方法定义中,我们在 Java 8 中引入了“default”关键字,因此您无需实现此方法。在本例中,Java 提供了“return bean;”作为此方法的主体。
关于spring - 实现 BeanPostProcessor spring 5 + java 9,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49319849/