2016-06-20 82 views
1
@Controller 
@RequestMapping("/test") 
public class TestController extends AbstractController { 
} 


public abstract class AbstractController { 
    private int connectionTimout; 
} 

在我servelet.xml我注入的屬性,但我想這個屬性在每個子控制器直接在一個AbstractController,而不是設置。春天控制器 - 注入性成AbstracController

<bean id="testController" class="com.test.controller.testController"> 
     <property name="connectionTimeout" value="${rest.connectionTimeout}" /> 
    </bean> 

回答

1

你在找什麼是bean定義繼承。你可以聲明一個抽象的bean(永遠不會被實例化)來保存一些屬性定義,並在具體的bean聲明中用它作爲父項。即使多個bean共享相同的屬性,也可以遵循DRY原則。在這裏,你可以這樣做:

<bean id="abstractController" abstract = "true" 
     class="com.test.controller.AbstractController"> 
    <property name="connectionTimeout" value="${rest.connectionTimeout}" /> 
</bean> 

<bean id="testController" class="com.test.controller.testController" 
     parent="abstractController"> 
    <!-- other properties but not connection timeout already inherited from parent --> 
</bean> 

(參考:在Spring框架的參考手冊bean定義的繼承)

0

嘗試

@Value("#{rest.connectionTimeout}") 
private int connectionTimeout; 

自動裝配使現場可用,即使是最後的。嘗試:

@Value("#{rest.connectionTimeout}") 
private final Integer connectionTimeout = null;