2013-05-16 39 views
10

Tôi có một số bean thực hiện giao diện và tôi muốn tất cả chúng đều có cùng @PostConstruct. Tôi đã thêm các chú thích để @PostConstruct phương thức giao diện của tôi, sau đó thêm vào các định nghĩa bean của tôi:Tôi có thể sử dụng @PostConstruct trên phương thức giao diện không?

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

Nhưng điều này dường như không được làm việc. Tôi sẽ sai ở đâu nếu điều này thậm chí có thể xảy ra?

chỉnh sửa: Tôi đã thêm các chú thích để giao diện như thế này:

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

Hãy cho chúng tôi biết thêm, vui lòng. Ý bạn là "thêm chú thích" là gì? –

+0

Tôi đã thêm một chút đoạn mã. cái đó có giúp ích không? Cảm ơn bạn – Abby

Trả lời

8

Các @PostConstruct phải được trên đậu thực tế bản thân, không phải là lớp giao diện. Nếu bạn muốn thực thi rằng tất cả các lớp thực hiện phương thức @PostConstruct, hãy tạo một lớp trừu tượng và làm cho phương thức @PostConstruct cũng trừu tượng.

public abstract class AbstractImplementation { 

    @PostConstruct 
    public abstract init(..); 
} 

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

@PostConstruct phải đi trên lớp bean java riêng của mình. Tôi không biết nó sẽ làm gì trên một giao diện.

Bạn có điều này trong XML của mình không?

<context:annotation-config /> 

Dưới đây là một số mã ví dụ: @PostConstruct example

+0

Có Tôi có chú thích-config trong xml. Tôi có thể sử dụng giao diện làm cha mẹ xác định phương thức init không? – Abby

+0

Không. Chú thích phải tự đi trên bean. –

+0

Tôi nghĩ rằng nó sẽ là? ví dụ: . Tôi sẽ đi với điều này và xem những gì sẽ xảy ra – Abby

Các vấn đề liên quan