2013-05-16 9 views
10

Ich habe eine Reihe von Beans, die eine Schnittstelle implementieren und ich möchte, dass sie alle das gleiche @PostConstruct haben. Ich habe die @PostConstruct Anmerkung zu meiner Interface-Methode hinzugefügt, dann zu meiner Bohne Definitionen:Kann ich @PostConstruct für eine Interface-Methode verwenden?

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

Aber das scheint nicht zu funktionieren. Wohin gehe ich falsch, wenn das überhaupt möglich ist?

edit: Ich habe die Anmerkung an die Schnittstelle wie folgt hinzugefügt:

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

Zeigen Sie uns bitte mehr. Was meinst du "die Anmerkung hinzugefügt"? –

+0

Ich habe ein bisschen mehr Code-Snippet hinzugefügt. Hilft das? Danke – Abby

Antwort

8

Die @PostConstruct auf dem tatsächlichen Bohne sein muss, selbst, nicht die Schnittstelle Klasse. Wenn Sie erzwingen möchten, dass alle Klassen die Methode @PostConstruct implementieren, erstellen Sie eine abstrakte Klasse, und machen Sie die Methode @PostConstruct ebenfalls abstrakt.

public abstract class AbstractImplementation { 

    @PostConstruct 
    public abstract init(..); 
} 

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

@PostConstruct hat auf der Bohne Java-Klasse selbst zu gehen. Ich weiß nicht, was es auf einer Schnittstelle tun wird.

Haben Sie dies in Ihrem XML?

<context:annotation-config /> 

Hier einige Beispiel-Code: @PostConstruct example

+0

Ja ich habe annotation-config in xml. Wäre ich in der Lage, die Schnittstelle als Elternteil zu verwenden, um eine Init-Methode zu definieren? – Abby

+0

Nein. Die Annotation muss auf die Bean selbst gehen. –

+0

Ich denke, es wäre? B. . Ich werde es ausprobieren und sehen, was passiert – Abby