2014-04-28 20 views
2

我正在閱讀參考文檔 - http://docs.spring.io/spring/docs/2.0.8/reference/jdbc.html以使用Spring體系結構連接來自Web應用程序的數據庫。如何使用Spring MVC訪問數據庫

這裏,代碼使用數據源創建一個jdbcTemplate。

<?xml version="1.0" encoding="UTF-8"?> 
<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.0.xsd"> 

    <bean id="corporateEventDao" class="com.example.JdbcCorporateEventDao"> 
     <property name="dataSource" ref="dataSource"/> 
    </bean> 

    <!-- the DataSource (parameterized for configuration via a PropertyPlaceHolderConfigurer) --> 
    <bean id="dataSource" destroy-method="close" class="org.apache.commons.dbcp.BasicDataSource"> 
     <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> 

</beans> 

我有很難理解 - -

  1. 在何處存放該XML文件

    public class JdbcCorporateEventDao implements CorporateEventDao { 
    
        private JdbcTemplate jdbcTemplate; 
    
        public void setDataSource(DataSource dataSource) { 
         this.jdbcTemplate = new JdbcTemplate(dataSource); 
        } 
    
        // JDBC-backed implementations of the methods on the CorporateEventDao follow... 
    } 
    

    數據源是在一個XML文件中定義的?是否有任何文件命名的命名?

  2. 數據源是如何映射到xml代碼中的?例如。如果我想在xml文件中有另一個環境,那麼需要觸及的代碼是什麼?

欣賞您的輸入。

+0

您正在查看關於spring v2的文檔,最新版本是4,順便說一句。 – NimChimpsky

+2

查看這些更新的指南http://spring.io/guides – geoand

+0

明白了!謝謝@geoand ...那麼在生產中使用什麼而不是SimpleDriverDataSource? – webExplorer

回答

1

首先使用高版本的spring(3及以上)來有效地使用註釋。

在XML文件中添加以下行

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

讓你的DAO類與@Repository註解。

這個類裏面使用

@Autowired 
JdbcTemplate jdbcTemplate 

,以便類應該看起來像

@Repository 
public class JdbcCorporateEventDao implements CorporateEventDao { 

    @Autowired 
    private JdbcTemplate jdbcTemplate; 


    // JDBC-backed implementations of the methods on the CorporateEventDao follow... 
} 

在未來,如果你想改變你的數據源,然後在下面的代碼應該被感動只是改變數據源引用

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

這裏改變ref="new datasource"爲dat asource property

+0

謝謝!我的問題雖然是 - 1)將xml文件放置在項目結構中的位置?有一個我應該給的名字嗎?和2)我可以有多個數據源,例如。開發數據源,臨時數據源和生產數據源? – webExplorer

+0

1)你可以在WEB-INF/Config文件夾中或直接在WEB-INF文件夾中放置xml 2)爲什麼你想dev開發prod不同的數據源..定義單個數據源,就像上面的xml一樣,讀取像dev的url uname passwd這樣的屬性。 prop prod.prop文件,因爲所有環境的數據源具有相同的屬性.. –

1

回答你的第一個問題。

命名只是遵循的標準方式。這是不特定的,

一般來說大多使用

application-context.xml, 
application-resource.xml 

回答你的第二個問題

談到文件的位置不侷限於任何文件夾。只要您在web.xml中定義導入資源屬性。

<import resource="yourpath/myxml.xml"/> 

還有一件事要說的是:@Autowired在代碼中缺失。 migth是沒有獲得jdbcTemplate的原因。

@Autowired 
public void setDataSource(DataSource dataSource) { 
     this.jdbcTemplate = new JdbcTemplate(dataSource); 
    } 
2
  • 你可以在任何地方保存它並將它命名爲任何你想要的!通過將該xml文件導入到您的spring上下文中來創建bean。

例如,如果我叫我的文件datasource.xml下我SRC其存儲/主/資源/配置文件夾:

<import resource="classpath:config/datasource.xml"/> 
  • 認爲你是問如何輕鬆配置不同環境下的數據源。有許多方法來這個 - 我通常在一個目錄(通常我在上面提到的那個)創建一些數據源文件

    datasource.DEV.xml 
    datasource.QA.xml 
    datasource.PROD.xml 
    

每一種被配置到不同的數據庫。然後,我通過傳遞環境變量我稱之爲「ENV」導入:

<import resource="classpath:config/datasource.${env}.xml"/> 

如果您正在使用Eclipse啓動,您可以指定在「環境」選項卡下的運行配置。