2016-05-22 12 views
1

Im in Aktion einige Beispiele aus dem Buch Frühling mit 4.Verbindung zu MySQL-Datenquelle im Frühjahr Boot ohne xml

@Bean 
public DataSource dataSource() { 
    return new EmbeddedDatabaseBuilder() 
      .setType(EmbeddedDatabaseType.H2) 
      .addScript("thetenticle.sql") 
      .build(); 
} 

@Bean 
public JdbcOperations jdbcTemplate(DataSource dataSource) { 
    return new JdbcTemplate(dataSource); 
} 

Das Beispiel erzeugt eine Datenquelle, die verwendet werden können, um db Operationen ausführen. Das Beispiel verwendet eine eingebettete h2-Datenbank. Das ist für mich nicht nützlich, da ich mich aus der Ferne mit einer MySQL-Datenbank verbinden möchte. Ich hoffte, dass ich nur ein DataSource-Objekt mit den Verbindungsdetails für meine Datenbank verbinden konnte. Gibt es eine Möglichkeit, dies zu tun? Ich habe kein Interesse an Hibernate oder Xml Config. Ich benutze Spring Boot.

Ich habe die letzten 18 Stunden damit verbracht, ein einfaches Beispiel zu finden, das eine mysql-Datenquelle anstelle eines eingebetteten h2 erstellt und eine Abfrage an die Datenbank sendet. Ich habe noch kein einziges Beispiel dafür gefunden. Einige Sites schlagen vor, die Verbindungsdetails zu application.properties hinzuzufügen .... aber wie kann ich daraus eine Datenquelle erstellen, gegen die ich SQL-Abfragen erstellen kann?

sorry für meine Unwissenheit, aber ich brauche nur eine einfache explaination

Antwort

2

Für eine schnelle Geschichtsstunde, siehe unten.

Haben die application.properties Setup, wie Sie online in vielen der Beispiele erwähnt gesehen haben:

spring.datasource.url=jdbc:mysql://yourhost/yourdb 
spring.datasource.username=youruser 
spring.datasource.password=yourpass 
spring.datasource.driver-class-name=com.mysql.jdbc.Driver 

Frühling eine DataSource für Sie erstellen, vorausgesetzt, Sie die richtigen Gläser auf Ihrem Classpath haben. Wenn Sie Maven oder Gradle zum Erstellen Ihrer Anwendung verwenden, sollten die folgenden Einträge Ihnen dabei helfen.

Maven:

<dependency> 
    <groupId>org.springframework.boot</groupId> 
    <artifactId>spring-boot-starter-jdbc</artifactId> 
    <version>1.3.5.RELEASE</version> 
</dependency> 

Gradle:

compile group: 'org.springframework.boot', name: 'spring-boot-starter-jdbc', version: '1.3.5.RELEASE' 

Schließlich lassen Autokonfiguration Sie Ihre JdbcOperations Objekt bauen (oder einfach nur Ihre DataSource, wenn Sie bevorzugen). Sie müssen nichts tun, um sie zu erstellen, nur @Autowired sie in Ihre Spring verwalteten Beans.

@Component 
public class MyBean { 
    @Autowired 
    private JdbcOperations jdbc; 

    public void doJdbcStuff() { 
     // use jdbc 
    } 
} 

History Lesson

Früh, Frühling Ziele zur Reduzierung Standardcode hatte (nur eines ihrer vielen Tore). Sie taten dies auf viele verschiedene Arten, indem sie viele deklarative APIs verwendeten, das Template-Muster nutzten und es einfach machten, eine in Java geschriebene Anwendung zu konfigurieren. Dabei wurde config in vielen großen Anwendungen zu einer Monstrosität. Sie stellten schnell fest, dass sie einen großen Teil der Komplexität der Erstellung einer Anwendung vom eigentlichen Geschäftsteil der Anwendung auf die Konfiguration verlagert hatten. Dies ist

wo SpringBoot kommt, mit dem Ziel,Konfiguration vorformulierten reduzieren. Es gibt eine Reihe von Möglichkeiten, wie dies erreicht wird: Die Konfiguration von Stücklisten, AutoConfiguration und application.properties ist das wichtigste Mittel.


Es klingt wie Sie durch Frühling in Aktion, 4. Auflage von Craig Walls gegangen sind.Wenn Ihnen das Spaß macht und Sie SpringBoot weiterhin lernen wollen, schreibt er auch SpringBoot in Action, das Ende 2015 veröffentlicht wurde. Es ist ein ziemlich schnelles Buch auf 264 Seiten und geht ein bisschen genauer über meine Geschichtsstunde hinaus.

+0

so viel! Ich habe die Geschichtsstunde genossen. Ich glaube, ich habe etwas sehr ähnliches versucht, aber ohne Autokonfiguration. Ich versuche es am Morgen. es sieht vielversprechend aus. Nochmals vielen Dank, ich akzeptiere dies als die Antwort, wenn ich es wotking :) – gezinspace

+0

danke! Ja, ich habe es heute Morgen funktioniert. Ich glaube, mein Problem war, dass ich mysql-connector aus meiner Liste der Abhängigkeiten entfernt hatte, als ich zum Versuch-und-Fehler-Ansatz zurückgekehrt war, als ich es nicht funktionierte. Hoppla. Ich schätze Ihre prägnante und informative Antwort :) – gezinspace

Verwandte Themen