spring - 实现 BeanPostProcessor spring 5 + java 9

标签 spring interface overriding

我正在编写自己的 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;
    }


}

编译器将允许您使用@O​​verride。

@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/

相关文章:

c# - 如何让一个抽象类需要一个接口(interface)由后代类实现?

c - 如何避免 C 容器服务器的用户定义库程序中出现 "exit"?

java - Springboot Form 转换 HTML -> PDF

java - 使用 Hibernate 和 JPA 持久化 JSON 对象

java - 通过 Java API 包装 scala API

c++ - 如何为我的自定义编译器制作解决方案资源管理器或项目界面

python - 在 Python 中扩展继承函数的行为

c# - 正确渲染覆盖的 TreeView

java - Spring websockets、NettyTcpClient - 连接失败

java - 运行junit时出现空指针异常