【发布时间】:2011-11-23 14:29:51
【问题描述】:
我正在尝试掌握 Spring 中的自动装配,但我似乎无法正确实例化 bean(DocumentBuilder)。我已经创建了一个这样的自定义 JSP 标记:
public class MyTag extends SimpleTagSupport {
@Autowired
private DocumentBuilder documentBuilder;
public void setBuilder(DocumentBuilder builder) {
this.documentBuilder = builder;
}
@Override
public void doTag() throws IOException {
// documentBuilder is null in here!
}
}
这是 servlet 配置:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd">
<!-- Scan for HTTP/REST controllers -->
<context:component-scan base-package="the.right.package" />
<context:annotation-config/>
<bean id="documentBuilderFactory"
class="javax.xml.parsers.DocumentBuilderFactory"
factory-method="newInstance">
<property name="validating" value="false" />
<property name="ignoringElementContentWhitespace" value="true" />
</bean>
<bean id="documentBuilder" class="javax.xml.parsers.DocumentBuilder"
factory-bean="documentBuilderFactory"
factory-method="newDocumentBuilder">
</bean>
</beans>
有什么想法吗?
【问题讨论】:
-
你确定标签很容易被依赖注入 - 你不应该这样做:ApplicationContext context = getContext(); documentBuilder = context.getBean("documentBuilder");而是?
-
老实说,我不知道。我对 Spring 和 DI 完全陌生!
-
看起来我是对的——标签不是由 Spring 管理的——所以你不能自动注入依赖项