2013-09-27 12 views
5

Sto tentando di collegare automaticamente il modello JDBC e sto ricevendo un'eccezione di puntatore nullo (il modello è nullo). Quale potrebbe essere il problema?Modello Autowire Jdbc

@Autowired 
template JdbcTemplate; 

Questo è il mio contesto di applicazione 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> 
+1

Per iniziare non è necessario 6 '' elementi. Ne hai bisogno solo uno con valori separati da virgole: '' –

+0

Questa xml config un contesto servlet dispatcher xml config o un contesto di inizializzazione root xml config? Ricorda che se il primo è vero non puoi fare riferimento al modello jdbc dai servizi dell'app di contesto webapp di root. –

risposta

3
  1. Il fagiolo si tenta di iniettare in non è nel contesto di primavera;
  2. No setter per la JdbcTemplate
  3. Si tenta di utilizzare il modello nel costruttore prima che il modello è injeted
5

Invece o di questo codice:

@Autowired 
template JdbcTemplate; 

È necessario:

@Autowired 
    JdbcTemplate template ; 
0

Un motivo per questo errore è quello di mescolare autowiring con la creatività manuale zione di fagioli.

Ad esempio, si dispone di una classe di servizio che autorizza un bean.

@Service 
public class CarService { 

    @Autowired 
    public JdbcTemplate jdbcTemplate; 

    // service code 
} 

Ma più tardi intead di

@Autowired 
private CarService carService; 

che fate:

CarService carService = new CarService();