2013-05-16 3 views
10

Ho un numero di bean che implementa un'interfaccia e mi piacerebbe che tutti avessero lo stesso @PostConstruct. Ho aggiunto il @PostConstruct annotazioni al mio metodo di interfaccia, quindi aggiunto ai miei definizioni di fagioli:Posso utilizzare @PostConstruct su un metodo di interfaccia?

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

Ma questo non sembra funzionare. Dove sbaglio se questo è possibile?

edit: ho aggiunto l'annotazione per l'interfaccia come questa:

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

Mostraci di più, per favore. Cosa intendi con "aggiunta l'annotazione"? –

+0

Ho aggiunto un po 'più di uno snippet di codice. Questo aiuta? Grazie – Abby

risposta

8

La @PostConstruct deve essere sul fagiolo vero e proprio, non la classe di interfaccia. Se si desidera applicare a tutte le classi l'implementazione del metodo @PostConstruct, creare una classe astratta e rendere astratto anche il metodo @PostConstruct.

public abstract class AbstractImplementation { 

    @PostConstruct 
    public abstract init(..); 
} 

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

@PostConstruct deve andare sulla classe Java Bean stessa. Non so cosa farà su un'interfaccia.

Avete questo nel vostro XML?

<context:annotation-config /> 

Ecco qualche esempio di codice: @PostConstruct example

+0

Sì, ho annotation-config in xml. Sarei in grado di utilizzare l'interfaccia come genitore definendo un metodo init? – Abby

+0

No. L'annotazione deve andare sul bean stesso. –

+0

Penso che sarebbe? ad esempio, . Ci provo e vediamo cosa succede – Abby