【发布时间】:2011-03-29 07:23:11
【问题描述】:
我正在尝试将数据源对象注入 servlet。我有记录器以 set 方法打印。它在预初始化时工作正常。但是当我请求 servlet 时,它给了我 nullPointerException。
关于为什么会发生这种情况的任何建议? (我认为这与我正在扩展的 servlet 无关)
这里是applicationContext.xml
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="${jdbc.driverClassName}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
</bean>
<bean id="dataServlet" class="com.mycom.util.DataServlet">
<property name="dataSource" ref="dataSource" />
<property name="test" value="dataSource" />
</bean>
小服务程序
public class DataServlet extends DataSourceServlet {
...
@Autowired
public void setDataSource(DataSource dataSource) {
this.jdbcTemplate = new JdbcTemplate(dataSource);
logger.log(Level.INFO, "Inj: datasrc");
}
@Autowired
public void setTest(String test) {
this.test = test;
logger.log(Level.INFO, "Set Test {0}", this.test);
}
}
我设置断点@setTest,它打破了@pre-init。但是当实际对象被请求时。它不会破坏@setTest。
为什么会这样? (单例/范围问题相关?)
请指教! 提前致谢!
【问题讨论】:
-
如果您仅尝试使用 setDataSource 或仅使用 setTest(完全删除另一个的所有初始化),它是否也会失败?只是为了缩小问题
标签: spring ioc-container spring-3