私はアプリケーションを持っています - Spring 4.3.6とSpring Boot 1.4.4を使用していますが、これはJARとしてエクスポートされます。リモートのOracleデータベースに接続したいが、アプリケーションを中断することなく構成を外部化するのに問題がある。DataSource用のSpringブート外部化構成が動作しない
これは私の現在の回避策です:上記で
import org.apache.tomcat.jdbc.pool.DataSource;
@Bean
public DataSource dataSource() {
DataSource dataSource = new DataSource();
dataSource.setUrl("jdbc:oracle:thin:@ip-address:port:orcl");
dataSource.setUsername("user");
dataSource.setPassword("password");
dataSource.setDriverClassName("oracle.jdbc.OracleDriver");
return dataSource;
}
、私のアプリケーションがデータベースに接続し、正常にクエリを実行することができます。しかし、私は次のような構成をexternaliseしようとすると:私の春のブートコントローラ(上記の作品を外部ずにあることに注意)でjdbcTemplate.update(query)
を実行しようとしたとき
@Bean
@ConfigurationProperties(prefix="app.datasource")
public DataSource dataSource() {
return new DataSource();
}
// application.properties
app.datasource.url=jdbc:oracle:thin:@ip-address:port:orcl
app.datasource.username=user
app.datasource.password=password
app.datasource.driver-class-name=oracle.jdbc.OracleDriver
私は、次のエラーが発生します。
org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection; nested exception is java.sql.SQLException: The url cannot be null
を
@ConfigurationProperties
を削除し、app.datasource
をspring.datasource
に変更しようとしました。私もを返して、javax.sql.DataSource
を返そうとしましたが、どちらの場合も同じエラーがスローされます。
私は何か間違っています。設定を外部化するための正しい方法は何ですか?
なぜあなたは自分の「データソース」を作成していますか... –
私は自分自身を最初に作成していませんでした。 hsqldbを使用していましたが、Oracleデータベースへのアクセス権がありませんでした。私は質問をしましたが、答えはojdbcに変更することです、私はそれをしました。今ではjdbctemplateにautowireするBeanを見つけることができないので、私は春のリファレンス(これについて作業を始めてからn番目の時間)を読むようになりました。問題はDataSourceが何らかの形で存在しないということです私はおそらく私がカスタムデータソースとして数えていることを推測しているので、なぜ私はそれを作成しようとしています。そして、それは自動的にapplication.properties設定で自分自身を設定していません... – thegreatjedi
hsqldbはオラクルではありません...それは決してうまくいかないでしょう。正しいドライバが必要であり、手動の設定が必要なドライバはありません。また、例外として、データソースはそこにありますが、接続ができないことを明示しています。したがって、おそらくあなたのユーザー名とパスワードの組み合わせに問題があります。基本的には設定を削除し、 'application.properties'再起動で' app.'を 'spring.'に置き換え、例外をチェックするだけです。 –