質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Oracle

Oracleは、米オラクルが取り扱うリレーショナルデータベース管理システムです。メインフレームからPCまで、多様なプラットフォームに対応しています。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Gradle

Gradleは、ビルド自動化ツールです。 ソフトウェアパッケージやドキュメント、 または実際に何か他の種類のプロジェクトの構築、テスト、公開、展開などを自動化が出来ます

Spring Boot

Spring Bootは、Javaのフレームワークの一つ。Springプロジェクトが提供する様々なフレームワークを統合した、アプリケーションを高速で開発するために設計されたフレームワークです。

Q&A

解決済

3回答

6441閲覧

[Spring Boot]起動時に「DAOが見つからない」エラーが出る

yosiaking

総合スコア10

Oracle

Oracleは、米オラクルが取り扱うリレーショナルデータベース管理システムです。メインフレームからPCまで、多様なプラットフォームに対応しています。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Gradle

Gradleは、ビルド自動化ツールです。 ソフトウェアパッケージやドキュメント、 または実際に何か他の種類のプロジェクトの構築、テスト、公開、展開などを自動化が出来ます

Spring Boot

Spring Bootは、Javaのフレームワークの一つ。Springプロジェクトが提供する様々なフレームワークを統合した、アプリケーションを高速で開発するために設計されたフレームワークです。

0グッド

0クリップ

投稿2018/01/03 08:03

編集2018/01/03 08:05

お世話になります。Spring Bootの開発でつまづいてしまい、ご質問させてください。
現在、Spring BootとDomaでDB操作が可能なAPI開発の環境構築を行っております。
ウェブサイトや参考書を参考にして環境構築を行い、いざ起動を行ったところ、起動をすることができない状態です。以下のようなエラーが発生しているのですが、どうにもこうにも八方塞がりでして、アドバイスをいただけませんでしょうか。。。

Error starting ApplicationContext. To display the auto-configuration report re-run your application with 'debug' enabled. 2018-01-03 16:34:02.107 ERROR 6106 --- [ main] o.s.b.d.LoggingFailureAnalysisReporter : *************************** APPLICATION FAILED TO START *************************** Description: Field testDao in com.test.controller.TestController required a bean of type 'com.test.domain.dao.TestDao' that could not be found. Action: Consider defining a bean of type 'com.test.domain.dao.TestDao' in your configuration.

作成したファイルのパッケージ構成は以下のようになっております。

src/main/java L com.test TutorialAppApplication.java L com.test.controller TestController.java L com.test.domain.dao TestDao.java L com.test.domain.entity SampleUser.java src/main/resource L application.properties

また、それぞれのファイルの中身は以下のようになっております。

TutorialAppApplication.java

Java

1package com.test; 2 3 4import org.springframework.boot.SpringApplication; 5import org.springframework.boot.autoconfigure.SpringBootApplication; 6 7@SpringBootApplication 8public class TutorialAppApplication { 9 10 public static void main(String[] args) { 11 SpringApplication.run(TutorialAppApplication.class, args); 12 } 13} 14

TestController.java

Java

1package com.test.controller; 2 3import java.util.List; 4 5import org.springframework.beans.factory.annotation.Autowired; 6import org.springframework.stereotype.Controller; 7import org.springframework.web.bind.annotation.GetMapping; 8import org.springframework.web.bind.annotation.RequestMapping; 9import org.springframework.web.bind.annotation.RestController; 10 11import com.test.domain.dao.TestDao; 12import com.test.domain.entity.SampleUser; 13 14@Controller 15@RequestMapping("/test") 16public class TestController { 17 18 @Autowired 19 private TestDao testDao; 20 21 @GetMapping("/sampleUsers") 22 public String index() { 23 24 System.out.println("test"); 25 26 List<SampleUser> sampleUsers = testDao.findAll(); 27 StringBuilder stringBuilder = new StringBuilder(); 28 for(SampleUser sampleUser : sampleUsers) { 29 stringBuilder.append(sampleUser.getId()) 30 .append(":") 31 .append(sampleUser.getName()) 32 .append("、"); 33 } 34 return stringBuilder.toString(); 35 } 36 37}

TestDao.java

Java

1package com.test.domain.dao; 2import java.util.ArrayList; 3 4import org.seasar.doma.Dao; 5import org.seasar.doma.Select; 6import org.seasar.doma.boot.ConfigAutowireable; 7 8import com.test.domain.entity.SampleUser; 9 10@Dao 11@ConfigAutowireable 12public interface TestDao { 13 14 @Select 15 ArrayList<SampleUser> findAll(); 16 17} 18

SampleUser.java

Java

1package com.test.domain.entity; 2 3import org.seasar.doma.Column; 4import org.seasar.doma.Entity; 5 6import lombok.Data; 7 8@Data 9@Entity 10public class SampleUser { 11 12 @Column(name = "id") 13 private String id; 14 15 @Column(name = "name") 16 private String name; 17 18} 19

**application.properties **

# DB spring.datasource.url=jdbc:oracle:thin:@localhost:1521:ORCLPDB1.localdomain spring.datasource.username=test_user spring.datasource.password=test spring.database.driverClassName=oracle.jdbc.driver.OracleDriver # DOMA doma.dialect=ORACLE doma.naming=SNAKE_LOWER_CASE

build.gradle

buildscript { ext { springBootVersion = '1.5.9.RELEASE' } repositories { mavenCentral() maven { url 'https://oss.sonatype.org/content/repositories/snapshots' } } dependencies { classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}") } } apply plugin: 'java' apply plugin: 'eclipse-wtp' apply plugin: 'org.springframework.boot' apply plugin: 'war' group = 'com.example' version = '0.0.1-SNAPSHOT' sourceCompatibility = 1.8 repositories { mavenCentral() } configurations { providedRuntime } dependencies { compile('org.springframework.boot:spring-boot-starter-web') compile("org.springframework.boot:spring-boot-starter-thymeleaf") compileOnly('org.projectlombok:lombok') providedRuntime('org.springframework.boot:spring-boot-starter-tomcat') testCompile('org.springframework.boot:spring-boot-starter-test') compile('org.seasar.doma.boot:doma-spring-boot-starter:1.0.2') compile('org.springframework.boot:spring-boot-starter-jdbc') }

ちなみに、Javaのバージョンは【1.8】になります。
お手数をおかけしますが、アドバイスをいただけますと幸いです。
どうぞよろしくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

TestDaoは、interfaceの名前ですので、実体を探しても見つかりません。
つImpl

追記
Domaでは、自動的に実装されたClassの名前は、<Inteface名> + Implとなります。

投稿2018/01/04 22:11

編集2018/01/08 04:24
hichon

総合スコア5737

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hichon

2018/01/04 23:46 編集

実体の名前は、サフィックスにImplが付くと書いてありますが…
yosiaking

2018/01/08 05:14

こちらもありがとうございます! 実体として、SQLファイルを配置したところうまくいきました・・・! お二人とも、適切なアドバイスをありがとうございます! 先にコメントくださっていたasahina1979さんをベストアンサーとさせていただきまして、hichonさんは高評価とさせていただきます。
guest

0

コンパイルが通っていないためにDomaによるコードの生成が成功していないように見受けられます。

まずはgradle buildした時に生成される下記のディレクトリにTestDaoImpl.javaTestDaoImpl.classが生成されていることを確認してみてください。これらのファイルが生成されていなければコンパイルに失敗していると言えます。

build/classes/java/main/com/test/domain/dao

私が気づいた問題点は以下の3つです。

  1. asahina1979さんが指摘されているようにbuild.gradleにいくつか記述が不足している
  2. TestDao#findAllに対応するSQLファイルが存在していない
  3. TestDao#findAllの戻り値の型がjava.util.ArrayListだがDomaとしてはjava.util.Listが正しい

投稿2018/01/08 02:21

nakamura-to

総合スコア103

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

多分ComponentScan問題

追記

もう一つ原因みつけた・

Gradle を使ったビルド

apply plugin: 'java' // JavaクラスとSQLファイルの出力先ディレクトリを同じにする processResources.destinationDir = compileJava.destinationDir // コンパイルより前にSQLファイルを出力先ディレクトリにコピーするために依存関係を逆転する compileJava.dependsOn processResources repositories { mavenCentral() maven {url 'https://oss.sonatype.org/content/repositories/snapshots/'} } dependencies { compile "org.seasar.doma:doma:2.19.0" }

やっぱりたりてないじゃん・・・

投稿2018/01/03 08:23

編集2018/01/07 16:45
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yosiaking

2018/01/03 08:55

>asahina1979さん ご回答をありがとうございます!こちら、試してみたのですがやはりダメのようでした。。 ・ディレクトリ構成自体は現状のままで問題なさそう → Applicationクラス は、他のパッケージよりも上の階層にある ・canBasePackagesでdaoのパッケージを指定してもダメ のような状況です。もし、他に考えられる理由を思いつかれましたらアドバイスをいただけますと幸いですm( _ _)m
退会済みユーザー

退会済みユーザー

2018/01/03 10:01

だとすると参考サイトで作ってるものを無視してないかい? どこの参考サイトかはしらないが
yosiaking

2018/01/08 05:07

ご返信が遅くなり申し訳ございません。 ありがとうございます!!! 完全に見落としておりました・・・!教えていただいた方法で、うまくビルドできました! (あと、自動的に作られるもんだと思い、SQLファイルの配置もしておりませんでした。。) ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問