2015-07-22 4 views
1

Я пытаюсь использовать Spring framework для выполнения некоторой операции crud на mysql db. Я добавил Maven зависимостей, это мой datasource.xml:Spring + JDBC Не удается подключиться к базе данных

<beans xmlns="http://www.springframework.org/schema/beans" 
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
      xsi:schemaLocation="http://www.springframework.org/schema/beans 
     http://www.springframework.org/schema/beans/spring-beans-2.5.xsd"> 

     <bean id="dataSource" 
      class="org.springframework.jdbc.datasource.DriverManagerDataSource"> 
     <property name="driverClassName" value="com.mysql.jdbc.Driver" /> 
     <property name="url" value="jdbc:mysql://localhost/Rubrica?" /> 
     <property name="username" value="user" /> 
     <property name="password" value="password" /> 
     </bean> 

     <bean id="JDBCEntryDAO" class="net.tirasa.jdbc_spring_addressbook"> 
     <property name="JDBC_Spring_EntryDAO" ref="JDBC_Spring_EntryDAO" /> 
     </bean>  
    </beans> 

Когда я запустить приложение я получаю исключение NullPointer (по указанной линии), я не могу подключиться к базе данных, это метод, который бросает исключение:

@Override 
    public List<Entry> list() { 
     List<Entry> res = new ArrayList<Entry>(); 
     String sql = "SELECT * FROM Person"; 

     try { 
      //open connection    

      Connection conn = datasource.getConnection(); //<----NULL POINTER EXCEPTION 

      //prepare the statement 
      PreparedStatement ps = conn.prepareStatement(sql); 

      //execute 
      ResultSet resultSet = ps.executeQuery(sql); 

      //populate entry 
      while (resultSet.next()) { 
       Entry entry = new Entry(); 
       entry.setId(resultSet.getInt("id")); 
       entry.setCn(resultSet.getString("cn")); 
       entry.setSn(resultSet.getString("sn")); 
       entry.setPn(resultSet.getString("pn")); 
       res.add(entry); 
      } 
      resultSet.close(); 
      ps.close(); 
      conn.close(); 
     } catch (SQLException ex) { 
      Logger.getLogger(JDBC_Spring_EntryDAO.class.getName()).log(Level.SEVERE, null, ex); 
     } 
     return res; 
    } 
+0

DataSource не инициализированы. Например. не автоуведомлен. Могло быть много причин. Отправьте здесь конфигурацию контекста вашего приложения и как вы инициализируете источник данных – StanislavL

+0

как вы вставляете dataSource ?, @Inject private DataSource datasource? – paul

+0

@StanislavL Я использую datasource.xml для установки источника данных, это файл, который я разместил. правильно ли использовать этот файл? – MdC

ответ

1

Я думаю, вам нужно впрыснуть DATASOURCE

<bean id="JDBCEntryDAO" class="net.tirasa.jdbc_spring_addressbook"> 
    <property name="JDBC_Spring_EntryDAO" ref="JDBC_Spring_EntryDAO" /> 
    <property name="dataSource" ref="dataSource" /> 
    </bean> 
Смежные вопросы