2016-05-02 8 views
1

私はJava 8 + Spring 4を使用していたアプリケーションで作業しています。今はSpring DIなしでアプリケーションを実行できるようにSpring DI要件を削除します。H2クエリに対してNamedParameterJdbcTemplateを開始するにはどうすればよいですか?

データベース操作には、Spring JdbcTemplateとNamedParameterJdbcTemplateを使用します。これらのテンプレートは、Javaアプリケーションで他の機能/ .jarを使用するときに使用しています。

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

アプリケーションのcontext.xmlは以下があります。

私はすべての@Autowiredや他の春に関連する注釈を削除する(そして今、コンストラクタを介してそれらを作る)

春バージョンをしていますが、この方法ですこのためコード:

012:

<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ファイルには、コードの下にあり

私の質問は、どのようにDI用のapplication-context.xmlを使用しない非スプリングバージョンでも同じコードを書くことができます。私は、パラメータとしてNamedParameterJdbcTemplateを持つコンストラクタH2Daoを使用したい。どのようにH2Daoコンストラクタを渡すNamedParameterJdbcTemplateをインスタンス化するには?

答えて

1

私が正しく理解しているかどうかわかりません。 とあなたのコードはおそらく次のようになります。

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

はい、ちょうどこれを試してみました:あなたはおそらくEmbeddedDatabaseBuilderを使用する必要がありますDIを使用しない場合でも、(http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/jdbc/datasource/embedded/EmbeddedDatabaseBuilder.htmlは、リンクを参照してください)。動作するようです。私は一度それをテストして更新します。 – Ajeetkumar

+0

ありがとうДенисЯкибчукこれはまさに探していたものです! – Ajeetkumar

関連する問題