Springboot Kein gültiges bean des Typs [javax.sql.DataSource]
Ich versuche zu bedienenden Anwendung.Eigenschaften bean datasource-aber es scheint, dass spring boot die Datei nicht findet oder so ähnlich.
Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [javax.sql.DataSource] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {}
Hier meine Struktur:
.
├── build.gradle
└── src
└── main
├── java
│ └── com
│ └── companies
│ ├── CompanyApplication.java
│ ├── config
│ │ └── WebMvcConfig.java
│ ├── controller
│ │ └── HelloWorldController.java
│ └── model
│ ├── Article.java
│ ├── daoInterface
│ │ └── ArticleDaoInterface.java
│ ├── daoTemplates
│ │ └── ArticleDao.java
│ └── mappers
│ └── ArticleMapper.java
├── resources
│ └── application.properties
└── webapp
└── WEB-INF
└── pages
└── hello.jsp
Ich habe versucht zu bewegen-Anwendung.Eigenschaften-Datei aus den Ressourcen auf config und nichts.
application.properties:
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/name
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
build.gradle
buildscript {
repositories {
//Required repos
mavenCentral()
maven { url "http://repo.spring.io/snapshot" }
maven { url "http://repo.spring.io/milestone" }
}
dependencies {
//Required dependency for spring-boot plugin
classpath "org.springframework.boot:spring-boot-gradle-plugin:1.2.6.RELEASE"
}
}
apply plugin: 'java'
apply plugin: 'war'
apply plugin: 'spring-boot'
jar {
baseName = 'companies'
version = '0.2'
}
war {
baseName = 'companies'
version = '0.1'
}
sourceCompatibility = 1.8
targetCompatibility = 1.8
repositories {
mavenCentral()
maven { url "http://repo.spring.io/snapshot" }
maven { url "http://repo.spring.io/milestone" }
}
dependencies {
compile 'org.springframework.boot:spring-boot-starter-web'
compile("org.springframework.boot:spring-boot-starter")
compile("org.springframework:spring-jdbc")
compile('org.springframework.boot:spring-boot-starter-jdbc:1.2.6.RELEASE')
testCompile("junit:junit")
//Required dependency for JSP
compile 'org.apache.tomcat.embed:tomcat-embed-jasper'
}
Und wo ich versuche zu autowire die dataSource:
package com.companies.model.daoTemplates;
import com.companies.model.Article;
import com.companies.model.daoInterface.ArticleDaoInterface;
import com.companies.model.mappers.ArticleMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Repository;
import javax.sql.DataSource;
import java.util.List;
@Repository
public class ArticleDao implements ArticleDaoInterface {
private JdbcTemplate jdbcTemplateObject;
private final String DB_NAME = "articles";
@Override
@Autowired
public void setDataSource(DataSource ds) {
this.jdbcTemplateObject = new JdbcTemplate(ds);
}
@Override
public List<Article> listArticle() {
String SQL = "select * from " + DB_NAME + " where inactive = false ORDER BY name";
List <Article> article = jdbcTemplateObject.query(SQL,
new ArticleMapper());
return article;
}
}
CompanyApplication.java
package com.companies;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
@Configuration
@ComponentScan
@EnableAutoConfiguration
public class CompanyApplication {
public static void main(String[] args) {
SpringApplication.run(CompanyApplication.class, args);
}
}
Ich kann nicht finden, wo ich versage an.
- Zeigen
CompanyApplication
- Die Spring-Boot-version verwenden Sie? Sie haben
spring-boot-starter-jdbc
in Ihrer Abhängigkeit Liste und haben Sie den MySQL-Treiber vorhanden? - hatte Recht, ich hatte eine Abhängigkeit linken spring-boot-starter-jdbc. Jetzt bin ich die Probleme mit com.mysql.jdbc.Treiber
Cannot load driver class: com.mysql.jdbc.Driver
- Das ist es, ein dependency-Links, sorry
- kann yo Antwort an stackoverflow.com/questions/35967143/.... Seine gleiche denken, aber ich bin immer, wo ist das Problem ?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Als @M. Deinum erwähnt in seinem Kommentar, es scheint eine Abhängigkeit problem mit der Konfiguration. Sie müssen eine Abhängigkeit zu spring-jdbc für eine eingebettete Datenbank werden automatisch konfiguriert.
Bitte stellen Sie sicher, dass Sie danach auf die Dokumentation
Sollten Sie auch prüfen, diese spring-boot-jdb-Probe
Frühling starten, ist meist basierend auf dem Prinzip, als darum, einer bestimmten jar in den classpath auslösen wird die Aktivierung der entsprechenden Funktionalität. Spring boot ist das Scannen der classpath beim Start und starten Sie "alles, was er fand," außer wenn Sie es deaktivieren, indem mithilfe der annotation.
Also, Spring Boot initialisieren einer Datenquelle müssen Sie eine der folgenden Abhängigkeiten:
- spring-boot-starter-jdbc : erlaubt die Verwendung der DataSource JDBC-Zeug.
- spring-boot-starter-data-jpa : laden Sie die JPA und damit die DataSource als sub-Modul
Habe ich angesichts dieses problem und fand heraus, dass die Implementierung von DataSource gelegt, die in Tomcat-libs. Also für den 8. tomcat Ihr noch
org.apache.tomcat.jdbc.pool.DataSource
- Klasse, platziert inorg.apache.tomcat:tomcat-jdbc:jar:8.0.36
Ich hatte das gleiche problem. In meinem Fall habe ich es gelöst, indem die Abhängigkeit für den mysql-java-connector.