2016-05-02 35 views
1

我正在使用java 8 + Spring 4的應用程序。現在我將刪除Spring DI要求,以便應用程序可以在沒有使用Spring DI的情況下運行。如何爲H2查詢啓動NamedParameterJdbcTemplate?

我將使用Springs JdbcTemplate和NamedParameterJdbcTemplate進行數據庫操作。我正在使用這些模板,因爲我們會在Java應用程序中使用任何其他功能/ .jar。

當我刪除所有@Autowired和其他相關春註釋(並且使他們構造了)

Spring版本是這樣的:

public class H2Dao { 
    private NamedParameterJdbcTemplate t; 
    @Autowired 
    public H2Dao(@Qualifier("H2JdbcTemplate") NamedParameterJdbcTemplate t) { 
     this.t=t; 
    } 
} 

應用程序的context.xml低於此代碼:

<jdbc:embedded-database id="h2DataSource" type="H2"> 
     <jdbc:script location="classpath:db/sql/h2.init.sql" /> 
    </jdbc:embedded-database> 

<bean id="H2JdbcTemplate" class="org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate"> 
     <constructor-arg ref="h2DataSource" name="dataSource" /> 
    </bean> 

h2.init.sql文件中有如下代碼:

CREATE ALIAS ROWNUM_OVER FOR "com.xx.xxxx.h2.H2Function.rowNumOver"; 
CREATE ALIAS DBO_UFUN_ADDDATETIME FOR "com.xx.xxxx.h2.H2Function.addDateTime"; 

我的問題是,我如何在非spring版本中編寫不使用application-context.xml的DI代碼。我想使用NamedParameterJdbcTemplate作爲參數的構造函數H2Dao。如何實例化NamedParameterJdbcTemplate傳遞H2Dao構造函數?

回答

1

我不知道我是否理解正確。但是,如果你不想使用DI,你可能會需要使用EmbeddedDatabaseBuilder(見鏈接:http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/jdbc/datasource/embedded/EmbeddedDatabaseBuilder.html) 和你的代碼可能會是這樣的:

EmbeddedDatabase db = new EmbeddedDatabaseBuilder() 
      .setType(EmbeddedDatabaseType.H2) 
      .addScript("schema.sql") 
      .build(); 
NamedParameterJdbcTemplate namedParameterJdbcTemplate = new NamedParameterJdbcTemplate(db); 
+0

肯定的,只是嘗試這樣做。似乎工作。一旦我測試它,我會更新。 – Ajeetkumar

+0

謝謝ДенисЯкибчук這正是尋找什麼! – Ajeetkumar