@Controller
@RequestMapping("/test")
public class TestController extends AbstractController {
}
public abstract class AbstractController {
private int connectionTimout;
}
在我的servelet.xml
我正在注入属性,但我希望这个属性直接在AbstractController中设置,而不是在每个子控制器中。
<bean id="testController" class="com.test.controller.testController">
<property name="connectionTimeout" value="${rest.connectionTimeout}" />
</bean>
答案 0 :(得分: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定义继承)
答案 1 :(得分:0)
尝试
@Value("#{rest.connectionTimeout}")
private int connectionTimeout;
自动装配使该字段可用,即使它是最终的。尝试:
@Value("#{rest.connectionTimeout}")
private final Integer connectionTimeout = null;