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

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

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

JAR(又はJava ARchive)はコンパイルされた複数のJavaバイトコード及び関連ファイルのリソースを一つのファイルに統合したものです。JARファイルはZIPファイルのフォーマットで構築されています。

Java

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

Spring

Spring Framework は、Javaプラットフォーム向けのオープンソースアプリケーションフレームワークです。 Java Platform上に、 Web ベースのアプリケーションを設計するための拡張機能が数多く用意されています。

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

Spring Boot

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

Q&A

解決済

5回答

26029閲覧

Spring Bootのエラーの解決策がわかりません

Hiroaki-Yamada

総合スコア25

JAR

JAR(又はJava ARchive)はコンパイルされた複数のJavaバイトコード及び関連ファイルのリソースを一つのファイルに統合したものです。JARファイルはZIPファイルのフォーマットで構築されています。

Java

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

Spring

Spring Framework は、Javaプラットフォーム向けのオープンソースアプリケーションフレームワークです。 Java Platform上に、 Web ベースのアプリケーションを設計するための拡張機能が数多く用意されています。

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

Spring Boot

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

0グッド

1クリップ

投稿2016/07/04 07:44

編集2016/07/08 01:04

Ecripseを使ってSpring Bootプログラミング入門という参考書をすすめているのですが、

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'helloController': Injection of autowired dependencies failed;nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: com.yamada.springboot.MyDataRepository com.yamada.springboot.HelloController.repository;No bean named 'entityManagerFactory' is defined

というエラーが出て困っています。
社内にSpringがわかる人がいないため、どなたかわかる方がいらっしゃいましたらご教授お願いいたします。念のため、コードも載せます。

ちなみに、Spring Bootのバージョンは1.3.6で文字コードはutf-8です。

java

1package com.yamada.springboot; 2 3import javax.persistence.Column; 4import javax.persistence.Entity; 5import javax.persistence.GeneratedValue; 6import javax.persistence.GenerationType; 7import javax.persistence.Id; 8import javax.persistence.Table; 9import javax.validation.constraints.Max; 10import javax.validation.constraints.Min; 11import javax.validation.constraints.NotNull; 12 13import org.hibernate.validator.constraints.Email; 14import org.hibernate.validator.constraints.NotEmpty; 15 16@Entity 17@Table(name="mydata") 18public class MyData { 19 20 @Id 21 @GeneratedValue(strategy = GenerationType.AUTO) 22 @Column 23 @NotNull 24 private long id; 25 26 @Column(length = 50, nullable = false) 27 @NotEmpty 28 private String name; 29 30 @Column(length = 200, nullable = true) 31 @Email 32 private String mail; 33 34 @Column(nullable = true) 35 @Min(0) 36 @Max(200) 37 private Integer age; 38 39 @Column(nullable = true) 40 private String memo; 41 42 public long getId() { 43 return id; 44 } 45 public void setId(long id) { 46 this.id = id; 47 } 48 49 public String getName() { 50 return name; 51 } 52 public void setName(String name) { 53 this.name = name; 54 } 55 56 public String getMail() { 57 return mail; 58 } 59 public void setMail(String mail) { 60 this.mail = mail; 61 } 62 63 public Integer getAge() { 64 return age; 65 } 66 public void setAge(Integer age) { 67 this.age = age; 68 } 69 70 public String getMemo() { 71 return memo; 72 } 73 public void setMemo(String memo) { 74 this.memo = memo; 75 } 76}

java

1package com.yamada.springboot.repositories; 2 3import java.util.List; 4 5import org.springframework.data.jpa.repository.JpaRepository; 6import org.springframework.stereotype.Repository; 7 8import com.yamada.springboot.MyData; 9 10@Repository 11public interface MyDataRepository extends JpaRepository<MyData, Long> { 12 13 public MyData findById(Long name); 14 public List<MyData> findByNameLike(String name); 15 public List<MyData> findByIdIsNotNullOrderByIdDesc(); 16 public List<MyData> findByAgeGreaterThan(Integer age); 17 public List<MyData> findByAgeBetween(Integer age1, Integer age2); 18 19} 20

java

1package com.yamada.springboot; 2 3import javax.annotation.PostConstruct; 4 5import org.springframework.beans.factory.annotation.Autowired; 6import org.springframework.stereotype.Controller; 7import org.springframework.transaction.annotation.Transactional; 8import org.springframework.validation.BindingResult; 9import org.springframework.validation.annotation.Validated; 10import org.springframework.web.bind.annotation.ModelAttribute; 11import org.springframework.web.bind.annotation.PathVariable; 12import org.springframework.web.bind.annotation.RequestMapping; 13import org.springframework.web.bind.annotation.RequestMethod; 14import org.springframework.web.bind.annotation.RequestParam; 15import org.springframework.web.servlet.ModelAndView; 16 17import com.yamada.springboot.repositories.MyDataRepository; 18 19@Controller 20public class HelloController { 21 22 @Autowired 23 MyDataRepository repository; 24 25 @RequestMapping(value = "/", method = RequestMethod.GET) 26 public ModelAndView index( 27 @ModelAttribute("formModel") MyData mydata, 28 ModelAndView mav) { 29 mav.setViewName("index"); 30 mav.addObject("msg","this is sample content."); 31 mav.addObject("formModel",mydata); 32 Iterable<MyData> list = repository.findAll(); 33 mav.addObject("datalist",list); 34 return mav; 35 } 36 37 @RequestMapping(value = "/", method = RequestMethod.POST) 38 @Transactional(readOnly=false) 39 public ModelAndView form( 40 @ModelAttribute("formModel") 41 @Validated MyData mydata, 42 BindingResult result, 43 ModelAndView mov) { 44 ModelAndView res = null; 45 if (!result.hasErrors()){ 46 repository.saveAndFlush(mydata); 47 res = new ModelAndView("redirect:/"); 48 } else { 49 mov.setViewName("index"); 50 mov.addObject("msg","sorry, error is occured..."); 51 Iterable<MyData> list = repository.findAll(); 52 mov.addObject("datalist",list); 53 res = mov; 54 } 55 return res; 56 } 57 58 @PostConstruct 59 public void init(){ 60 MyData d1 = new MyData(); 61 d1.setName("tuyano"); 62 d1.setAge(123); 63 d1.setMail("syoda@tuyano.com"); 64 d1.setMemo("this is my data!"); 65 repository.saveAndFlush(d1); 66 MyData d2 = new MyData(); 67 d2.setName("hanako"); 68 d2.setAge(15); 69 d2.setMail("hanako@flower"); 70 d2.setMemo("my girl friend."); 71 repository.saveAndFlush(d2); 72 MyData d3 = new MyData(); 73 d3.setName("sachiko"); 74 d3.setAge(37); 75 d3.setMail("sachico@happy"); 76 d3.setMemo("my work friend..."); 77 repository.saveAndFlush(d3); 78 } 79 80 @RequestMapping(value = "/edit/{id}", method = RequestMethod.GET) 81 public ModelAndView edit(@ModelAttribute MyData mydata, 82 @PathVariable int id,ModelAndView mav) { 83 mav.setViewName("edit"); 84 mav.addObject("title","edit mydata."); 85 MyData data = repository.findById((long)id); 86 mav.addObject("formModel",data); 87 return mav; 88 } 89 90 @RequestMapping(value = "/edit", method = RequestMethod.POST) 91 @Transactional(readOnly=false) 92 public ModelAndView update(@ModelAttribute MyData mydata, 93 ModelAndView mav) { 94 repository.saveAndFlush(mydata); 95 return new ModelAndView("redirect:/"); 96 } 97 98 @RequestMapping(value = "/delete/{id}", method = RequestMethod.GET) 99 public ModelAndView delete(@PathVariable int id, 100 ModelAndView mav) { 101 mav.setViewName("delete"); 102 mav.addObject("title","delete mydata."); 103 MyData data = repository.findById((long)id); 104 mav.addObject("formModel",data); 105 return mav; 106 } 107 108 @RequestMapping(value = "/delete", method = RequestMethod.POST) 109 @Transactional(readOnly=false) 110 public ModelAndView remove(@RequestParam long id, 111 ModelAndView mav) { 112 repository.delete(id); 113 return new ModelAndView("redirect:/"); 114 } 115} 116

xml

1<?xml version="1.0" encoding="UTF-8"?> 2<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 3 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4 <modelVersion>4.0.0</modelVersion> 5 6 <groupId>com.yamada.springboot</groupId> 7 <artifactId>MyBootApp</artifactId> 8 <version>0.0.1-SNAPSHOT</version> 9 <packaging>jar</packaging> 10 11 <name>MyBootApp</name> 12 <description>Sample project for Spring Boot</description> 13 14 <parent> 15 <groupId>org.springframework.boot</groupId> 16 <artifactId>spring-boot-starter-parent</artifactId> 17 <version>1.3.6.RELEASE</version> 18 <relativePath/> <!-- lookup parent from repository --> 19 </parent> 20 21 <properties> 22 <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 23 <java.version>1.8</java.version> 24 <start-class>org.springframework.boot.SpringApplication</start-class> 25 </properties> 26 27 <dependencies> 28 <dependency> 29 <groupId>org.springframework.boot</groupId> 30 <artifactId>spring-boot-starter-web</artifactId> 31 </dependency> 32 33 <dependency> 34 <groupId>org.springframework.boot</groupId> 35 <artifactId>spring-boot-starter-test</artifactId> 36 <scope>test</scope> 37 </dependency> 38 <dependency> 39 <groupId>org.springframework.boot</groupId> 40 <artifactId>spring-boot-starter-thymeleaf</artifactId> 41 </dependency> 42 <dependency> 43 <groupId>org.springframework.boot</groupId> 44 <artifactId>spring-boot-starter-data-jpa</artifactId> 45 </dependency> 46 <dependency> 47 <groupId>org.hsqldb</groupId> 48 <artifactId>hsqldb</artifactId> 49 <scope>runtime</scope> 50 </dependency> 51 <dependency> 52 <groupId>org.springframework.boot</groupId> 53 <artifactId>spring-boot-starter-data-mongodb</artifactId> 54 </dependency> 55 </dependencies> 56 57 <build> 58 <plugins> 59 <plugin> 60 <groupId>org.springframework.boot</groupId> 61 <artifactId>spring-boot-maven-plugin</artifactId> 62 </plugin> 63 </plugins> 64 </build> 65 66</project>

以上になります。よろしくお願いします。

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

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

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

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

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

guest

回答5

0

「Spring Bootのバージョンは1.3.6」の環境が無いので、
STS3.8.2にて「spring-boot-starter-parent1.4.3.RELEASE」の環境で、
Hiroaki-Yamadaさんのコードを動かす事が出来ましたので、報告しておきます。

  1. 「Spring スターター・プロジェクト」で、プロジェクトを作成。

  2. Hiroaki-Yamadaさんのコードを配置。

  3. 「public class HelloController 」ですが、本来は、

「public class HeloController」です。
誤り:Hello、正:Helo。
STS3.8.2では、エラーメッセージが出るので、この手の間違いは、すぐに分かるのですが、
もしかしたら、当時は、気が付かずに、あらぬ、方向へ行ってしまったのかもしれませんね。

  1. DB接続については、pom.xmlにて
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> <dependency> <groupId>org.hsqldb</groupId> <artifactId>hsqldb</artifactId> <scope>runtime</scope> </dependency>

記述にて、
@Autowired
MyDataRepository repository;

の元、

Iterable<MyData> list = repository.findAll();
と、
public interface MyDataRepository extends JpaRepository<MyData, Long>内の
MyData data = repository.findById((long)id);
等が、有効化され、hsqldbとの接続がなされます。

p.s.
この手のサンプルコードが、一度で、旨く動いたためしはなく、間違い探しや、環境の構築の繰り返しの日々です。

最悪、ほかの本でいちからやってみようかと思います。

ですが、本書の5章までは、間違いは無く、小生の手元では、動いています。
なぜ5章までかというと、、、PostgeSQLとSQLite3との接続確認を優先したためで、
6章に入ったところで、本投稿を見つけて、検証し、結果を書き込んだ次第です。

あと、pom.xmlを修正したら
maven、プロジェクトの更新
run、clear
run、install
をして、spring boot jar の依存関係を都度更新しないと、こういったエラーが出まくりました。

投稿2017/01/17 06:57

編集2017/01/17 08:09
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

0

自己解決

本の著者でも解決策はわからないようなので、未解決ですがクローズします。

投稿2016/07/08 06:47

Hiroaki-Yamada

総合スコア25

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

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

ahodana

2017/01/19 23:51

手順通りやってできないはずがないから(間を飛ばしたんだろう)てことかと
guest

0

エラーメッセージは、「EntityManagerFactoryのBeanクラスがないので、HelloControllerへのインジェクションに失敗した」と言っていますね。

EntityManagerFactoryはSpring JPAのクラスですので、Spring Data JPAに関する設定をapplication.propertiesに記述する必要があります。

application.propertiesにこのあたりを追記してみてはどうでしょう。
(値はDBの種類によって変えてください)

spring.jpa.hibernate.ddl-auto: create-drop spring.jpa.hibernate.naming_strategy: org.hibernate.cfg.ImprovedNamingStrategy spring.jpa.database: H2 spring.jpa.show-sql: true

参考:http://docs.spring.io/spring-boot/docs/current/reference/html/howto-data-access.html

投稿2016/07/06 07:25

yohira0616

総合スコア255

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

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

Hiroaki-Yamada

2016/07/06 08:17

ご回答ありがとうございます。 上記サイトを参考にして、下のコードを追記してみたのですが変わらずでした。 spring.jpa.hibernate.ddl-auto=create-drop spring.jpa.hibernate.naming-strategy=org.hibernate.cfg.ImprovedNamingStrategy spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL5Dialect spring.jpa.database=MYSQL spring.jpa.show-sql=true
guest

0

データベースの設定がぬけているのもたしかなんですが....
この本Spring Bootプログラミング入門はなんかうまく動作しないとかいてありました。
amazonの評価で。
一度正誤表を見たり、出版社に聞いてみたらいかがですか?

投稿2016/07/05 11:45

gik

総合スコア152

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

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

Hiroaki-Yamada

2016/07/06 02:44 編集

ご回答ありがとうございます。 amazonのレビュー書いたの僕です。 正誤表はなく、出版社にエラーの質問をしたのですが返事が返ってきません。
gik

2016/07/06 05:48

すいません。 買う勇気がなくて立ち読みを少ししたんですが この本はspring tool suiteの説明にだいぶページ量が使われていたのですが データベースについてなにか書いてないのですが? あとなにかいろいろ記述がたりないように思われるのですが..... このプログラムはダウンロードで落としたものをimportしたものですか?
Hiroaki-Yamada

2016/07/06 06:14

spring tool suiteについて説明が記載されていたのですが、各画面の説明のみで、 データベースについては記載されていませんでした。 プログラムについては、自分で書いて動かなかったので、サポートページからダウンロードしものをコピペしました。それでも動きませんでした。
gik

2016/07/06 06:56

返品できます? そこまでくるとだめですね ほかにも一人いるということはたぶんHiroaki-Yamadaさんが 間違っているとは思えないんですよね。 たぶん、一か所なおしてもエラーがまだまだでそうな予感.... ほかの本やサイトで勉強したほうがよいと思います。
Hiroaki-Yamada

2016/07/06 07:13

今日の午前中に、出版社にエラー内容を送信してみました。 お昼過ぎに確認したところ、著者に報告したとのことでした。 著者からの回答待ちですが、いまのところ音沙汰ないので返事は期待しておりません。 エラー内容をググってみると、xmlにdatasouceやらbeanやら設定するらしいですが、 その辺の説明もないです。 最悪、ほかの本でいちからやってみようかと思います。
guest

0

SpringBootと言うよりも、mavenの問題でしょうか。

C:/Users/UserName/.m2/repository/org/hibernate/hibernate-core/4.3.11.Final/hibernate-core-4.3.11.Final.jar を読み込もうとして失敗してしまったようです。

一度、C:/Users/UserName/.m2/repository/org/hibernate/hibernate-core/ ディレクトリを削除した後にEclipseを再起動して、mavenから再取得した方が良いでしょう。

投稿2016/07/04 07:58

A-pZ

総合スコア12011

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

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

Hiroaki-Yamada

2016/07/04 08:42

早急なご回答ありがとうございます。marvenのエラーは消えたのですが、今度は Error creating bean with name 'heloController':No bean named 'entityManagerFactory' is definedというエラーが出てしまいます。
A-pZ

2016/07/05 05:55

こちら( https://teratail.com/questions/39617 )の質問と全く同じ状態だと思うのですが、dataSourceの記述(どこのデータベースに接続するか)の記述がないため動作していません。 例えばMariaDBを使った例では、application.propertiesに以下のように記述するだけです。 spring.datasource.driver-class-name=org.mariadb.jdbc.Driver spring.datasource.url=jdbc:mariadb://localhost:3306/test spring.datasource.username=root spring.datasource.password=password spring.datasource.name=test
Hiroaki-Yamada

2016/07/05 09:35 編集

ご回答ありがとうございます。 テキストではapplication.propertiesの記述がなかったのでぐぐって下記のように書いてみたのですが、エラー内容が変わらなかったです。 (application.properties) spring.datasource.url=jdbc:hsqldb:hsql://localhost/test spring.datasource.username=SA spring.datasource.password="" spring.datasource.driverClassName=org.hsqldb.jdbc.JDBCDriver おわかりになりましたら、ご教授いただけると幸いです。 よろしくお願いします。
A-pZ

2016/07/05 09:41

spring.datasource.name が抜けていますよ
Hiroaki-Yamada

2016/07/06 02:04

ご回答ありがとうございます。 hsqldbの接続がわからなかったので、以前作成したmysqlに接続したのですがエラー内容が変わらなかったです。 spring.datasource.driver-class-name=com.mysql.jdbc.Driver spring.datasource.url=jdbc:mysql://localhost/servletschedule spring.datasource.username=scheduleuser spring.datasource.password=schedulepass spring.datasource.name=servletschedule
A-pZ

2016/07/06 03:37

application.propertiesは既存のファイルを使用していますよね? (問題ないとは思いますが念のため:src/main/resources/application.properties )
Hiroaki-Yamada

2016/07/06 03:59

はい、既存のsrc/main/resources/application.propertiesを利用しています。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問