2015-09-27 4 views
6

Я пытаюсь использовать application.properties для bean datasource, но кажется, что весенняя загрузка не находит файл или что-то в этом роде.Springboot Отсутствие квалификационного компонента типа [javax.sql.DataSource]

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: {} 

Вот моя структура:

. 
├── 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 

Я пытаюсь переместить application.properties файл из ресурсов конфигурации и ничего. 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' 
    } 

И где я пытаюсь autowire в 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); 
    } 

} 

Я не могу найти, где я проваляюсь.

+1

Show 'CompanyApplication' –

+4

Какую версию Spring Boot вы используете? У вас есть 'spring-boot-starter-jdbc' в вашем списке зависимостей, и есть ли у вас драйвер MySQL? –

+0

@ M.Deinum был прав, у меня была одна зависимость, оставленная весной-boot-starter-jdbc. Теперь у меня возникают проблемы с com.mysql.jdbc.Driver 'Не удается загрузить класс драйвера: com.mysql.jdbc.Driver' – fritsMaister

ответ

0

Я столкнулся с этой проблемой и выяснили, что реализация DataSource помещается в Tomcat LIBS. Так что для 8-го кота вы собираетесь включить org.apache.tomcat.jdbc.pool.DataSource класс, который размещен в org.apache.tomcat:tomcat-jdbc:jar:8.0.36

0

У меня была та же проблема. В моем случае я решил это, добавив зависимость для java-коннектора mysql.

+1

Вероятно, вы должны быть более конкретным, как вы добавили зависимость и/или как вы определили, какую зависимость добавить. – YakovL

+0

Если честно, я не знаю, как здесь ответить. Я понял, какую зависимость добавить, потому что вам нужен соединитель java mysql в Spring для подключения к mySQL-базам данных. И он знает, как добавить зависимости. Он уже добавил несколько в свой проект. У всех есть кто зашел так далеко ... – espendennis

+0

Если это обычная вещь, тогда все в порядке. У меня нет опыта работы с Java, я просто просматривал первые ответы, поэтому придумываю, если коммен не имеет значения – YakovL

Смежные вопросы

 Смежные вопросы