2013-05-16 14 views
10

Mam wiele fasoli wdrażających interfejs i chciałbym, aby wszyscy mieli ten sam @PostConstruct. Dodałem @PostConstruct adnotacji do mojego metody interfejsu, a następnie dodaje do moich definicjach fasoli:Czy mogę użyć @PostConstruct w metodzie interfejsu?

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

Ale to nie wydaje się działać. Gdzie się mylę, jeśli to nawet możliwe?

edit: Dodałem adnotacji do interfejsu tak:

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

Pokaż nam więcej, proszę. Co masz na myśli "dodano adnotację"? –

+0

Dodałem trochę więcej fragmentu kodu. To pomaga? Dziękuję – Abby

Odpowiedz

8

@PostConstruct musi być na rzeczywistej, a nie samej fasoli klasy interfejsu. Jeśli chcesz wymusić, że wszystkie klasy implementują metodę @PostConstruct, utwórz klasę abstrakcyjną i uczyń również metodę @PostConstruct.

public abstract class AbstractImplementation { 

    @PostConstruct 
    public abstract init(..); 
} 

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

@PostConstruct musi przejść od klasy fasoli java sama . Nie wiem, co zrobi w interfejsie.

Czy masz to w swoim XML?

<context:annotation-config /> 

Oto przykładowy kod: @PostConstruct example

+0

Tak Mam adnotation-config w xml. Czy będę mógł korzystać z interfejsu jako rodzic definiujący metodę init? – Abby

+0

Nie. Adnotacja musi iść na samej fasoli. –

+0

Myślę, że tak? np. . Pójdę z tym i zobaczę, co się stanie – Abby

Powiązane problemy