私はSpring、特にSpring Bootは本当に新しいです。私にお願いします、できる限り明確に、私がしなければならないことを非常によく理解できるように、ドキュメントを読んでください。
私のプロジェクトは、MySQL + JavaFX + Spring Boot + Spring Data JPA + Hibernateフレームワーク/テクノロジーを使用しています。
これは私のPOMファイルです。
<project xmlns="http://maven.Apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.Apache.org/POM/4.0.0 http://maven.Apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.nubeclick</groupId>
<artifactId>pos</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>POSNubeClick</name>
<description>Sistema de punto de venta (Point Of Sale).</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.1.RELEASE</version>
<relativePath /> <!-- lookup parent from repository -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<Java.version>1.8</Java.version>
<slf4j.version>1.7.12</slf4j.version>
<log4j.version>1.2.17</log4j.version>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>com.miglayout</groupId>
<artifactId>miglayout-javafx</artifactId>
<version>5.0</version>
</dependency>
<dependency>
<groupId>commons-lang</groupId>
<artifactId>commons-lang</artifactId>
<version>2.6</version>
</dependency>
<!-- <dependency> -->
<!-- <groupId>org.slf4j</groupId> -->
<!-- <artifactId>slf4j-api</artifactId> -->
<!-- <version>${slf4j.version}</version> -->
<!-- </dependency> -->
<!-- <dependency> -->
<!-- <groupId>org.slf4j</groupId> -->
<!-- <artifactId>jcl-over-slf4j</artifactId> -->
<!-- <version>${slf4j.version}</version> -->
<!-- </dependency> -->
<!-- <dependency> -->
<!-- <groupId>org.slf4j</groupId> -->
<!-- <artifactId>slf4j-log4j12</artifactId> -->
<!-- <version>${slf4j.version}</version> -->
<!-- </dependency> -->
<!-- <dependency> -->
<!-- <groupId>log4j</groupId> -->
<!-- <artifactId>log4j</artifactId> -->
<!-- <version>${log4j.version}</version> -->
<!-- </dependency> -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-Java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>com.jfoenix</groupId>
<artifactId>jfoenix</artifactId>
<version>1.10.0</version>
</dependency>
<dependency>
<groupId>de.jensd</groupId>
<artifactId>fontawesomefx</artifactId>
<version>8.9</version>
</dependency>
<dependency>
<groupId>org.controlsfx</groupId>
<artifactId>controlsfx</artifactId>
<version>8.40.13</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
これは私の.properties構成です。
spring.main.banner-mode=off
# Datasource connection properties
spring.datasource.url=jdbc:mysql://localhost/posnubeclick
spring.datasource.username=nubeclick
spring.datasource.password=nubeclick
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
# JPA Properties
spring.jpa.database=posnubeclick
# Hibernate Configuration Properties
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5Dialect
spring.jpa.properties.hibernate.current_session_context_class=thread
spring.jpa.properties.hibernate.jpa.show-sql=true
spring.jpa.properties.hibernate.format_sql=true
# Naming strategy
spring.jpa.hibernate.naming-strategy =org.hibernate.cfg.ImprovedNamingStrategy
#Turn Statistics on
spring.jpa.properties.hibernate.generate_statistics=true
# logging
logging.pattern.console=%d{yyyy-MM-dd HH:mm:ss} %-5level %logger{36} - %msg%n
logging.level.org.hibernate.stat=debug
logging.level.org.hibernate.type=trace
logging.level.org.hibernate.SQL=debug
#logging.level.org.hibernate.type.descriptor.sql=trace
logging.level.=error
これが私のメインクラスです
@SpringBootApplication(scanBasePackages = { "com.nubeclick.pos" })
public class MainApp extends Application {
private static final Logger log = LoggerFactory.getLogger(MainApp.class);
public static void main(String[] args) throws Exception {
SpringApplication.run(MainApp.class, args);
// launch(args);
}
@Override
public void start(Stage stage) throws Exception {
try {
log.info("Starting Hello JavaFX and Maven demonstration application");
String fxmlFile = "/fxml/Main.fxml";
log.debug("Loading FXML for main view from: {}", fxmlFile);
FXMLLoader loader = new FXMLLoader();
Parent rootNode = (Parent) loader.load(getClass().getResourceAsStream(fxmlFile));
log.debug("Showing JFX scene");
Scene scene = new Scene(rootNode);
scene.getStylesheets().add("/styles/styles.css");
stage.setTitle("NubeClick - Point of Sales");
stage.setScene(scene);
stage.show();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
これはスタックトレースです:
コンテキストの初期化中に例外が発生しました-更新試行のキャンセル:org.springframework.beans.factory.UnsatisfiedDependencyException: 'org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaConfiguration'という名前のBeanの作成中にエラーが発生しました。ネストされた例外はorg.springframework.beans.factory.BeanCreationException:クラスパスリソース[org/springframework/boot/autoconfigure/jdbc/DataSourceConfiguration $ Hikari.class]で定義された 'dataSource'という名前のBeanの作成エラー:ファクトリメソッドによるBeanインスタンス化に失敗しました;ネストされた例外はorg.springframework.beans.BeanInstantiationException:[com.zaxxer.hikari.HikariDataSource]のインスタンス化に失敗しました:ファクトリメソッド 'dataSource'は例外をスローしました。ネストされた例外はorg.springframework.boot.autoconfigure.jdbc.DataSourceProperties $ DataSourceBeanCreationException:適切なドライバークラスの決定に失敗しました
Springメッセージはこれです:
説明:
データソースの自動設定に失敗しました:「spring.datasource.url」が指定されておらず、埋め込みデータソースを自動設定できませんでした。
理由:適切なドライバークラスを決定できませんでした
アクション:
次のことを考慮してください。組み込みデータベース(H2、HSQL、またはDerby)が必要な場合は、クラスパスに配置してください。
特定のプロファイルからデータベース設定をロードする場合は、アクティブ化する必要があります(現在アクティブなプロファイルはありません)。
私は他に何をすべきかわかりません。おそらくゼロからやり直すかもしれませんが、それらのフレームワークを現在のプロジェクトに適合させたいです。
これを解決するにはどうすればよいですか?
クレイジーなこと、私はプロジェクトを別のリポジトリにアップロードすることを決め、プロジェクトフォルダを完全にきれいにし(.project、.settings、.classpath、bin、targetを削除し)、プロジェクトをEclipseに再インポートし、設定-> mavenの性質を追加し、そして今、エラーはなくなりました、少なくともこのエラーは、他のエラーを取得しましたが、プロパティファイルからすべてをロードするので、なぜこれが起こったのですか?
プロジェクトを別のリポジトリにアップロードし、プロジェクトフォルダーを完全にクリーンアップし(.project、.settings、.classpath、bin、targetを削除)、プロジェクトをEclipseに再インポートし、configure-> add maven nature、and nowエラーはなくなりました、少なくともこのエラーは他のエラーを受け取りましたが、今ではプロパティファイルからすべてを読み込みます。
たぶん、Spring Bootはapplication.properties
ファイル。このファイルがresourcesフォルダーのルートにあることを確認してください(典型的なMavenプロジェクト構成では、src/main/resources
フォルダールート)。
DEBUGログレベルを有効にして、Spring Bootが正しいapplication.properties
ファイル。
これは、私たちが隣同士に座っていた場合、私がすることです、いくつかの行をコメントアウトします:
# Datasource connection properties
spring.datasource.url=jdbc:mysql://localhost/posnubeclick
spring.datasource.username=nubeclick
spring.datasource.password=nubeclick
#spring.datasource.driver-class-name=com.mysql.jdbc.Driver
# JPA Properties
#spring.jpa.database=posnubeclick
.propertiesファイルはapplication.properties OR bootstrap.properties?
Pom.xmlまたはbuild.gradleファイルにmysql依存関係があることを確認してください。
compile 'mysql:mysql-connector-Java'
または
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-Java</artifactId>
</dependency>
次に、driver-class-name
プロパティ。スプリングブートが自動的に設定するためです。
もう1つ:mysqlへの具体的なポート(デフォルトでは3306)に接続する必要があるようです。そのため、次のようになります。
spring.datasource.url=jdbc:mysql://localhost:3306/posnubeclick