8

我正在尝试自动连接 JDBC 模板,但出现空指针异常(模板为空)。可能是什么问题呢?

@Autowired
template JdbcTemplate;

这是我的应用程序上下文 xml:

<bean ..>
    <mvc:annotation-driven />

            <context:component-scan base-package="igate.dto" />
                <context:component-scan base-package="igate.dao" />
                    <context:component-scan base-package="igate.service" />
                        <context:component-scan base-package="igate.controller" />
                <context:component-scan base-package="igate.logs" />
                    <context:component-scan base-package="igate.testcases" />


    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
          <property name="prefix" value="/"/>
          <property name="suffix" value=".jsp" />
            </bean> 


    <bean id="ds" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver" />
        <property name="url" value="jdbc:oracle:thin:@172.21.17.5:1521:oraten" />
        <property name="username" value="lab01trg21" />
        <property name="password" value="lab01oracle" />
    </bean>

    <bean id="template" class="org.springframework.jdbc.core.JdbcTemplate">
        <property name="dataSource" ref="ds"/>
    </bean>

</beans>
4

3 回答 3

9

而不是这段代码:

@Autowired
template JdbcTemplate;

你需要:

@Autowired
JdbcTemplate template;
于 2014-04-17T05:15:09.777 回答
4
  1. 您尝试注入的 bean 不在 spring 上下文中;
  2. JdbcTemplate 没有设置器
  3. 您尝试在模板注入之前在构造函数中使用模板
于 2013-09-27T18:25:52.290 回答
4

此错误的一个原因是将自动装配与手动创建 bean 混合在一起。

例如,您有一个自动装配 bean 的服务类。

@Service
public class CarService {

    @Autowired
    public JdbcTemplate jdbcTemplate;

    // service code
}

但后来

@Autowired
private CarService carService;

你做:

CarService carService = new CarService();
于 2017-02-17T13:49:37.627 回答