2010-11-21 28 views
26

Tôi có yêu cầu để tiêm phụ thuộc vào siêu lớp trừu tượng bằng cách sử dụng khung công tác mùa xuân.Tiêm phụ thuộc vào mùa xuân trong lớp siêu trừu tượng

class A extends AbstractClassB{ 
    private Xdao daox ; 
    ... 
    public setXdao() { ... } 
} 

class AbstractClassB{ 
    .. 
    private yDao daoy; 
    public seyYdao() { ... } 
} 

tôi cần phải vượt qua lớp cha mọi sự phụ thuộc i nhanh chóng Abstract class B (có thể được subclassed trong 100 cách trong dự án của tôi)

mục trong application.xml (mùa xuân tập tin ngữ cảnh)

<bean id="aClass" class="com.mypro.A" 
    <property name="daox" ref="SomeXDaoClassRef" /> 
    <property name="daoy" ref="SomeYDaoClassRef"/> 
</bean> 

Làm thế nào tôi có thể tạo tham chiếu bean của lớp siêu lớp AbstractClassB trong tệp application.xml để tôi có thể sử dụng nó trong tất cả tạo lớp con của lớp con?

Trả lời

37

Bạn có thể tạo ra một định nghĩa bean trừu tượng, và sau đó "Loại" định nghĩa rằng, ví dụ

<bean id="b" abstract="true" class="com.mypro.AbstractClassB"> 
    <property name="daox" ref="SomeXDaoClassRef" /> 
</bean> 

<bean id="a" parent="b" class="com.mypro.A"> 
    <property name="daoy" ref="SomeYDaoClassRef" /> 
</bean> 

Nói đúng ra, định nghĩa cho b thậm chí không yêu cầu bạn phải xác định lớp, bạn có thể để lại mà ra:

<bean id="b" abstract="true"> 
    <property name="daox" ref="SomeXDaoClassRef" /> 
</bean> 

<bean id="a" parent="b" class="com.mypro.A"> 
    <property name="daoy" ref="SomeYDaoClassRef" /> 
</bean> 

Tuy nhiên, cho rõ ràng, và để cung cấp cho công cụ của bạn tốt hơn có thể giúp bạn ra ngoài, tốt nhất là nên để nó vào.

Section 3.7 of the Spring Manual thảo luận về thừa kế định nghĩa bean.

+0

Hoàn hảo !! Cảm ơn rất nhiều ... nó đã làm việc ... Bạn đã cứu ngày của tôi – bob

+0

Hoàn hảo !! Nó đã làm việc. – bob

+0

Quay lại. Bản chỉnh sửa mới chỉ vào phần 5.7 không 3.7. – K3N

3

Bạn có thể sử dụng cờ trừu tượng của Spring để cho Spring biết rằng một lớp là trừu tượng. Sau đó, tất cả các triển khai cụ thể có thể chỉ đơn giản là đánh dấu đậu này là hạt cha mẹ của chúng.

<bean id="abstractClassB" class="AbstractClassB" abstract="true"> 
    <property name="yDao" ref="yDao" /> 
</bean> 

<bean id="classA" class="A" parent="abstractClassB"> 
    <property name="xDao" ref="xDao" /> 
</bean> 
+0

Bạn có nghĩa là 'cha mẹ' thay vì 'mở rộng' có lẽ? – Muhd

+0

cảm ơn đã chỉ .. đã sửa – peakit

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