我可以在接口方法上使用@PostConstruct吗?

2022-09-03 14:39:04

我有许多bean实现一个接口,我希望它们都具有相同的@PostConstruct。我已经将注释添加到我的接口方法中,然后添加到我的bean定义中:@PostConstruct

<bean class="com.MyInterface" abstract="true" />

但这似乎不起作用。如果可能的话,我哪里会出错?

编辑:我已经将注释添加到界面中,如下所示:

package com;
import javax.annotation.PostConstruct;
public interface MyInterface {
    @PostConstruct
    void initSettings();
}

答案 1

@PostConstruct必须位于实际的 Bean 本身上,而不是 Interface 类上。如果要强制所有类都实现@PostConstruct方法,请创建一个抽象类,并使@PostConstruct方法也抽象。

public abstract class AbstractImplementation {

    @PostConstruct
    public abstract init(..);
}

public class ImplementingBean extends AbstractImplementation {
    public init(..) {
        ....
    }
}

答案 2

@PostConstruct必须继续bean java类本身。我不知道它会在界面上做什么。

您的 XML 中是否有此内容?

<context:annotation-config />

下面是一些示例代码:@PostConstruct示例