2017-01-20 18 views
0

私はspringファイルでデータソースを初期化するSpringブートアプリケーションを作成しています。しかし、エラーの下になって:データソースはSpringブートアプリケーションで初期化できませんか?

java.lang.NullPointerException: null 
    at com.howtodoinjava.demo.controller.JdbcCustomerDAO.insert(JdbcCustomerDAO.java:28) ~[classes/:na] 
    at com.howtodoinjava.demo.controller.EmployeeController.getCustomer(EmployeeController.java:36) ~[classes/:na] 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_91] 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_91] 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_91] 
    at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_91] 
    at org 

取得NullPointerExceptionが下の行に:

conn = dataSource.getConnection(); 

私のソースコードですがhttps://github.com/thesnehajain/spring_boot/tree/master/springbootdemo

+0

'dataSource'が注入なっていないため、です。 '@ Autowired'アノテーションを使用してコンストラクタインジェクションを試し、後でセッターインジェクションを使用するよう調整してください。 –

+0

アノテーションを入れた後に同じエラーが出ます。 – Vicky

答えて

1

XMLファイル削除githubの に(それらのすべてを!)。

src/main/resourcesの内側に新しいファイルapplication.propertiesを作成し、その中にこれを置く:

spring.datasource.driverClassName = com.mysql.jdbc.Driver 
spring.datasource.url = jdbc:mysql://rdssample.xxxxxx.us-west-2.rds.amazonaws.com:3306/customer 
spring.datasource.username = rdssample 
spring.datasource.password = rdssample 
#spring.jpa.hibernate.ddl-auto = create-drop 
spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL5Dialect 

...トリックを作るべきです!

春のブートは、すべての慣習と発見に関するものなので、すべての豆と依存関係を定義し、保持し続ける必要はありません。いくつかの "プロパティ"を宣言するだけで、それらの多くを取得することができます。

UPDATE

春の設定は、両方の「味」(XMLやJavaクラス)で、春ブーツの下で許可されていますが、再び、春ブートアプリケーションは設定なしにはほとんど必要がある、全くコード生成とXML構成の必要はありません。従来のSpring MVCアプリケーションのように見えるかもしれませんが、実際は非常に異なっています。 Spring Boot Reference Guideを見ると、役に立つヒントや例がたくさんあります。

は、Javaの設定を経由してデータソースを設定したい場合はまた、あなたのケースでは、あなたがこれに似た何かを行うことができます:

@Configuration 
public class DataConfig { 
    @Bean 
    public DataSource dataSource() { 
    return DataSourceBuilder.create() 
     .driverClassName("com.mysql.jdbc.Driver") 
     .username("rdssample") 
     .password("rdssample") 
     .url("jdbc:mysql://rdssample.xxxxxx.us-west-2.rds.amazonaws.com:3306/customer") 
     .build(); 
    } 
} 
+0

springbootアプリケーションでは、springの設定は許可されていませんか?私はあなたの解決策を試しています。 – Vicky

+0

ありがとうございます。あなたのソリューションは機能しました。しかし、あなたは私の上記の質問に答えることができますか? – Vicky

+0

誰かが同じ変更を行う必要がある場合に備えて、今後の参考のために回答に「update」句を入れます –

関連する問題