2013-05-16 21 views
10

Bir arabirimi uygulayan bir dizi fasulye var ve hepsinin de aynı @PostConstruct'a sahip olmasını istiyorum.Bir arabirim yönteminde @PostConstruct kullanabilir miyim?

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

Ama bu çalışıyor görünmüyor: Ben arayüz yöntemine @PostConstruct ek açıklama ekledik, sonra benim fasulye tanımları eklendi. Bu mümkün olsa ben nerede yanlış gidiyorum?

düzenleme: Böyle arayüzüne ek açıklama ekledik:

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

Bize daha fazlasını göster, lütfen. Ne demek "ek açıklama ekledi"? –

+0

Biraz daha kod snippet'i ekledim. Bu yardımcı olur mu? Teşekkür ederim – Abby

cevap

8

@PostConstruct gerçek fasulye kendisi değil Arayüz sınıfı üzerinde olmak zorunda: Burada

<context:annotation-config /> 

bazı örnek kodudur. Tüm sınıfların @PostConstruct yöntemini uygulayacağını zorlamak istiyorsanız, soyut bir sınıf oluşturun ve @PostConstruct yöntemini de soyutlayın.

public abstract class AbstractImplementation { 

    @PostConstruct 
    public abstract init(..); 
} 

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

@PostConstruct fasulye java sınıfının kendisinde gitmek zorunda. Bir arayüzde ne yapacağını bilmiyorum.

Bunu XML'inizde var mı? @PostConstruct example

+0

Evet xml'de ek açıklama var. Arabirimi bir init-yöntemi tanımlayan bir ebeveyn olarak kullanabilir miyim? – Abby

+0

Hayır. Ek açıklama, çekirdeğin kendisine gitmek zorundadır. –

+0

Bence öyle olur mu? ör. . Ben bununla gideceğim ve ne olduğunu göreceğim – Abby