春の環境は初めてです。ORMとしてHibernateを、データベースとしてMYSQLを使用してSpringBootを使用する基本的なMVCアプリケーションを開発しようとしていました。依存関係と構成のセットアップで多くの問題に遭遇しました。現在、私は次のエラーに悩まされ、それを乗り越える方法を理解することができませんでした。
org.springframework.beans.factory.BeanCreationException: Cannot determine embedded database driver class for database type NONE. If you want an embedded database please put a supported one on the classpath.
これは私が自分のアプリケーションで持っているセットアップです。混乱を避けるために、サービス層とjspページはありません。
データベース:
MySql-ユーザーと呼ばれるデータベースが既に存在し、ユーザーのサンプルリストを含むユーザーと呼ばれるテーブルがあります。
User.java(モデル)
@Entity
@Table(name = "Users")
public class User {
@Id
@GeneratedValue
public String id;
public String username;
public String firstname;
public String lastname;
public String password;
}
UserRepository:
@Repository
@Table(name = "Users")
public interface UserRepository extends JpaRepository<User, String> {
}
UserController:
@RestController
public class UserController {
private UserRepository userRepository;
@Autowired
public UserController(UserRepository userRepository)
{
this.userRepository = userRepository;
}
@RequestMapping("user")
public void getUser(@RequestParam("id") String id) {
User user = userRepository.findOne(id);
}
}
Application.properties:
server.port:9000
spring.datasource.url:jdbc:mysql:// localhost / Users
spring.datasource.driverClassName:com.mysql.jdbc.Driver
spring.datasource.username:root
spring.datasource.password:
POM.xml
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.1.3.RELEASE</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
<exclusions>
<exclusion>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
</exclusion>
</exclusions>
</dependency>
<!-- HIBERNATE -->
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>4.3.0.Final</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
<version>4.3.0.Final</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.hibernate.javax.persistence</groupId>
<artifactId>hibernate-jpa-2.0-api</artifactId>
<optional>true</optional>
</dependency>
<!-- Spring ORM, works with Hibernate -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-orm</artifactId>
</dependency>
<!-- MYSQL -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
</dependencies>
編集:メインクラスを追加する
メインクラス
@ComponentScan
@Configuration
@EnableAutoConfiguration
public class ApplicationStart {
public static void main(String[] args)
{
SpringApplication.run(ApplicationStart.class, args);
}
}
これは私のアプリケーションの現在の設定です。エラーを探す場所がわからないようで、インターネットのチュートリアルで問題が解決しませんでした。ですから、例外を解決する方法についてのヘルプは大歓迎です。
さらに情報が必要な場合はコメントしてください。
ありがとう
サポートされている場所のapplication.properties
いずれかにいることを確認してください。
- 現在のディレクトリの/ configサブディレクトリ。
- 現在のディレクトリ
- クラスパス/ configパッケージ
- クラスパスルート
リストは優先順位で並べられています(リストの上位にある場所が下位のアイテムを上書きします)。
プロパティファイルでキーと値のペアを分離する:
必要がありますが、より一般的に使用される=
セパレータを使用することをお勧めします。
あなたのポンには、私が移動することをお勧めするいくつかの不要な混乱が含まれています。必要なのは、mysql-connector-java
他のすべてのものへの依存性だけです。その他の依存性は、依存するスタータープロジェクトを通じて提供されます。
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<!-- MYSQL -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
</dependencies>
これらは必要なすべてのものである必要があり、バージョンと推移的な依存関係は、spring-boot-dependency pom.xmlによって処理されます。(スターター親の祖父母)。
@EnableAutoConfiguration
アノテーションを使用する場合、アノテーション付きのクラスは、スキャンを開始するパッケージを決定するためにも使用されます。通常、このアノテーションはスタータークラスに配置します。このアプリケーションクラスを最上位パッケージ(つまり、your.package.application.StarterClass
)に配置することをお勧めします。他のすべてのパッケージは、そのパッケージのサブパッケージである必要があります。これにより、すべてのクラスが自動的に検出されます。
それが不可能な場合は、追加を追加して、@ComponentScan
スキャンを開始するベースパッケージ@EntityScan
を指定し、a を使用して、エンティティを含むパッケージを指定する必要があります。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加