2013-05-16 1 views
10

私はインターフェイスを実装するいくつかのBeanを持っており、それらのすべてに同じ@PostConstructを持たせたいと思います。@PostConstructをインターフェイスメソッドで使用できますか?

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

しかし、これは動作していないようです:私は私のBean定義に追加され、その後、私のインターフェイスメソッドに@PostConstruct注釈を追加しました。これが可能であれば私は間違っていますか?

編集:私はこのようなインタフェースに注釈を追加しました:

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

ご覧ください。 「注釈を追加しました」とはどういう意味ですか? –

+0

もう少しコードスニペットを追加しました。それは役に立ちますか?ありがとうございます – Abby

答えて

8

@PostConstructは、実際のBean自体ではなく、インタフェースクラスでなければなりません。すべてのクラスが@PostConstructメソッドを実装するように強制する場合は、抽象クラスを作成して@PostConstructメソッドも抽象クラスにします。

public abstract class AbstractImplementation { 

    @PostConstruct 
    public abstract init(..); 
} 

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

@PostConstructは、BeanのJavaクラス 自体に行かなければなりません。私はそれがインターフェイス上で何をするのか分からない。

あなたのXMLにこれがありますか?ここ

<context:annotation-config /> 

は、いくつかの例のコードである:@PostConstruct example

+0

はい私はxmlでannotation-configを持っています。私はinitメソッドを定義する親としてインターフェイスを使用できますか? – Abby

+0

いいえ。注釈はBean自体に付いていなければなりません。 –

+0

私はそうだと思いますか?例えば、 init-method = "initSettings" />私はこれと一緒に行って何が起こるかを見てみましょう。 – Abby

関連する問題