2015-05-27 20 views
8

tôi đã xác định giao diệnmùa xuân 4 không thể thực thi Java 8 phương pháp mặc định

public interface MyInterface { 
    default void setOrder(int a){ } 
    default int getOrder(){return 123;} 
} 

và thực hiện

public class MyInterfaceImpl implements MyInterface {} 

Trong file cấu hình mùa xuân của tôi, tôi đã xác định sau đậu:

<bean id="a" class="my.package.MyInterfaceImpl"> 
    <property name="order" value="999"/> 
</bean> 

Khi Tôi tạo bối cảnh mùa xuân tôi nhận được lỗi sau:

Caused by: org.springframework.beans.NotWritablePropertyException: Invalid property 'order' of bean class [my.package.MyInterfaceImpl]: Bean property 'order' is not writable or has an invalid setter method. Does the parameter type of the setter match the return type of the getter? 

Tôi đang sử dụng spring in version 4.1.6.RELEASE. Vì vậy, câu hỏi của tôi là tại sao nó không thể thực thi phương thức setOrder là phương thức mặc định từ giao diện MyInterface? Có vẻ như mùa xuân hoàn toàn bỏ qua các phương pháp như vậy.

+0

Tôi chỉ có thể đoán, nhưng có thể mùa xuân kiểm tra các phương pháp bằng cách đặt một giá trị và sau đó lấy lại giá trị giả định getter trả về giá trị đã đặt trước đó. Trong ví dụ của bạn, điều này sẽ không thành công. Hãy thử gán cho một trường hoặc ghi đè lên trường đó để kiểm tra điều này. –

+1

Hãy thử thay đổi '' thành '' làm getter mặc định của bạn trả về '123'không '999 '. –

Trả lời

6

Xử lý các phương pháp mặc định trong giao diện sẽ đi kèm với mùa xuân 4.2, vì vậy cho đến khi sau đó, hoặc sử dụng các ứng viên phát hành hoặc sự kiện quan trọng hoặc không sử dụng phương pháp mặc định với mùa xuân (https://jira.spring.io/browse/SPR-12822 hoặc https://jira.spring.io/browse/SPR-10919)

+0

Tôi vừa mới nâng cấp lên 4.2.5.RELEASE và vẫn gặp sự cố này – cjbooms

1

Vấn đề này vẫn còn hiện diện trong xuân 4.2.5.RELEASE

tôi đã ném cùng một ví dụ mà giới thiệu nó trên Github đây: https://github.com/cjbooms/spring-default-methods

Và đăng nhập một vé với mùa xuân ở đây: https://jira.spring.io/browse/SPR-14198

+0

Điều này đã được khắc phục và được lên lịch để được đưa vào bản phát hành Mùa xuân 4.3 vào ngày 8 tháng 6 năm 2016 – cjbooms

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