无法自动连接存储库字段



我正在使用JavaFX和Spring Boot构建一个小型桌面应用程序。我使用 JavaFX Weaver 将 JavaFX 和 Spring Boot 集成在一起。

我想使用 JPA 存储库界面访问 MySQL 数据库,但是,由于存储库字段的自动连接,我在启动应用程序时出现错误。

控制台错误

项目结构

服务

@Service
public class ColorService {
// I get the error when I add these 2 lines of code
@Autowired
private ColorRepository colorRepository;
public List<Color> getColors(){
return colorRepository.findAll();
}
}

存储 库

@Repository
public interface ColorRepository extends JpaRepository<Color, Integer> {
}

实体

@Entity
@Table(name="color")
public class Color {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name="color_id")
private int id;
@Column
private String colorName;
public Color() {
}
public Color(String colorName) {
this.colorName = colorName;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getColorName() {
return colorName;
}
public void setColorName(String colorName) {
this.colorName = colorName;
}
}

主应用

@SpringBootApplication
public class MainApp {
public static void main(String[] args) {
Application.launch(JavaFxApplication.class, args);
}
}

JavaFX 主应用程序

public class JavaFxApplication extends Application {
private ConfigurableApplicationContext applicationContext;
@Override
public void init() {
String[] args = getParameters().getRaw().toArray(new String[0]);
this.applicationContext = new SpringApplicationBuilder().sources(MainApp.class).run(args);
}
@Override
public void start(Stage stage) {
FxWeaver fxWeaver = applicationContext.getBean(FxWeaver.class);
Parent root = fxWeaver.loadView(MainController.class);
Scene scene = new Scene(root);
scene.getStylesheets().add("css/style.css");
stage.setScene(scene);
stage.show();
}
@Override
public void stop() {
this.applicationContext.close();
Platform.exit();
}
}

聚 甲醛

<?xml version="1.0" encoding="UTF-8"?>
<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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.0.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.diogo</groupId>
<artifactId>habittracker</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>habittracker</name>
<description>Habit Tracker</description>
<properties>
<java.version>11</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.openjfx</groupId>
<artifactId>javafx-controls</artifactId>
<version>13</version>
</dependency>
<dependency>
<groupId>org.openjfx</groupId>
<artifactId>javafx-fxml</artifactId>
<version>13</version>
</dependency>
<dependency>
<groupId>net.rgielen</groupId>
<artifactId>javafx-weaver-spring-boot-starter</artifactId>
<version>1.3.0</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-jpa</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.openjfx</groupId>
<artifactId>javafx-maven-plugin</artifactId>
<version>0.0.3</version>
<configuration>
<mainClass>com.diogo.habittracker.MainApp</mainClass>
</configuration>
</plugin>
</plugins>
</build>
</project>

类 ColorRepository 的包未在组件扫描中定义。

尝试添加:@ComponentScan({"包1","包2","..."}(

最新更新