2017-01-20 4 views
0

Ich erstelle eine Spring-Boot-Anwendung, wo ich Datenquelle in Spring-Datei initialisieren. Aber unten Fehler bekommen:Datenquelle nicht über Spring-Boot-Anwendung initialisieren?

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 

Erste Nullpointer auf unten Linie:

conn = dataSource.getConnection(); 

Mein Quellcode ist auf Github https://github.com/thesnehajain/spring_boot/tree/master/springbootdemo

+0

Das ist, weil 'dataSource' nicht injiziert zu werden; Probieren Sie die Konstruktorinjektion mit der '@ Autowired' Annotation aus und optimieren Sie sie später, um die Setterinjektion –

+0

Stil mit dem gleichen Fehler nach dem Einfügen der Annotation zu verwenden. – Vicky

Antwort

1

Löschen Sie Ihre XML-Dateien (alle!).

Erstellen Sie eine neue Datei application.properties innerhalb src/main/resources und setzen diese im Inneren:

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 

... dass der Trick machen sollte!

Beim Spring Boot geht es um Konventionen und Erkennung, so dass Sie nicht alle Ihre Beans und Abhängigkeiten definieren müssen. Sie können eine Menge von ihnen erwerben, nur ein paar "Eigenschaften" deklarieren.

UPDATE

Frühling config in beide "Flavours" (XML und Java-Klassen) unter Federverschluß erlaubt ist, aber wieder, Frühling Boot-Anwendungen müssen keine Konfiguration sehr wenig, mit absolut keine Code-Generierung und keine Voraussetzung für die XML-Konfiguration. Es kann wie eine traditionelle Spring MVC-Anwendung aussehen, aber es ist tatsächlich sehr unterschiedlich. Schauen Sie sich die Spring Boot Reference Guide an, dort finden Sie viele nützliche Tipps und Beispiele.

Darüber hinaus kann in Ihrem Fall, wenn Sie Ihre Datenquelle über Java Config konfigurieren möchten, können Sie etwas ähnliches tun:

@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

Ist die Spring-Konfiguration in Springboot-Anwendungen nicht erlaubt? Inzwischen versuche ich deine Lösung. – Vicky

+0

Danke. Deine Lösung hat funktioniert. Aber könnten Sie meine obige Frage beantworten? – Vicky

+0

Ich setze und "update" -Klausel in der Antwort selbst für zukünftige Referenzen, falls jemand die gleiche Änderung (en) machen muss –

Verwandte Themen