2013-09-27 8 views
5

Ich versuche, JDBC-Vorlage automatisch zu verbinden, und ich bekomme eine Nullzeiger-Ausnahme (Vorlage ist Null). Was könnte das Problem sein?Autowire Jdbc Vorlage

@Autowired 
template JdbcTemplate; 

Dies ist mein Anwendungskontext 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

Sie nicht mehr als 6 'So starten Sie brauchen ' Elemente. Sie benötigen nur eins mit Komma-getrennten Werten: '' –

+0

Ist diese XML-Konfiguration ein Dispatcher-Servlet-Kontext-XML config oder ein root-Anwendungskontext-Initialisierer xml config? Denken Sie daran, wenn die erste wahr ist, können Sie die jdbc-Vorlage nicht aus den App-Diensten der Stammwebappenkontext-App referenzieren. –

Antwort

3
  1. Die Bohne Sie zu injizieren versuchen ist im Frühjahr Kontext nicht;
  2. Keine weisend für die JdbcTemplate
  3. Sie versuchen, die Vorlage in den Konstruktor zu verwenden, bevor die Vorlage
5

Stattdessen o diesem Code injeted ist:

@Autowired 
template JdbcTemplate; 

Sie benötigen:

@Autowired 
    JdbcTemplate template ; 
0

Ein Grund für diesen Fehler ist das Mischen von Autowiring mit manuellem crea Bohnen.

Sie haben beispielsweise eine Serviceklasse, die eine Bean autowirestet.

@Service 
public class CarService { 

    @Autowired 
    public JdbcTemplate jdbcTemplate; 

    // service code 
} 

Aber später intead von

@Autowired 
private CarService carService; 

Sie tun:

CarService carService = new CarService();