2016-05-03 4 views
2

私が設定している:私のコントローラでJdbcTemplateでDataSourceを指定する方法は?私のapplication.propertiesで

datasource.test.driverClass=org.postgresql.Driver 
datasource.test.url=jdbc:postgresql://localhost:5433/test 
datasource.test.username=admin 
datasource.test.password=admin 

logging.level.com.eternity = DEBUG 

を、私はこのような文字列を形成し、いくつかのSQLクエリを実行しようとしています:

String selectQueryPartOne = "SELECT name, ("+ StringUtils.join(sumString, " + ")+") AS 'Price' FROM house WHERE NOT (" +StringUtils.join(sumString, " IS NULL OR ")+" IS NULL);"; 
JdbcTemplate statement = new JdbcTemplate(); 
statement.queryForList(selectQueryPartOne); 

正常に動作思われる、しかし、私は、次のエラーが発生します:

java.lang.IllegalArgumentException: No DataSource specified 

statementオブジェクトに、私が最初にsetDataSourceする必要があることを、私を発見しました。しかし、私はこのdataSourceオブジェクトをどこで取得できるか分かりません。手伝ってくれる?

+1

あなたのために 'JdbcTemplate'を既に作成している(あなたのタグにしたがって)Springブートを使用していますが、なぜあなた自身で作成していますか?ちょうどそれを注入する。 –

+0

はい、@ M.Deinumによると、自分で作成した場合、Springによって作成されたものを使用していないため、DataSourceを注入しません。ちょうどJdbcTemplateをautowireし、代わりにその1つを使用してください。 – cjstehno

+0

どのように注入できますか?私は春を公開しようとしています。だから愚かな質問であれば大変申し訳ありません。 – uksz

答えて

2

自分でJdbcTemplateインスタンスを作成すると、Spring依存性注入の外部で作業しているため、DataSourceが注入されません。

@Controller 
public class MyController { 
    @Autowired private JdbcTemplate jdbcTemplate; 

    @RequestMapping("/") 
    public String myAction(){ 
     // do stuff with the jdbc template 
    } 
} 

また、春と春ブーツのドキュメントは、春の操作に関するさらなる研究のための素晴らしいリソースです:あなたは、のようなものは、オートワイヤリングを経て春が提供するインスタンスを使用する必要があります。

関連する問題