gpt4 book ai didi

java - Spring Boot + JavaFx Autowiring 不起作用

转载 作者:行者123 更新时间:2023-12-02 00:31:58 24 4
gpt4 key购买 nike

昨天我尝试创建连接 Spring Boot 和 JavaFX 的项目。我是根据http://www.greggbolinger.com/let-spring-be-your-javafx-controller-factory/

因此,我创建了一个项目,当我运行应用程序时,将创建 spring 上下文并运行 JavaFx 应用程序。但问题是当我尝试创建一些 bean 时,例如使用 @Repository 注释。当我 Autowiring 时,值为空。

CarGarageApplication.java

package com.car.garage;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.data.jpa.repository.config.EnableJpaRepositories;

import com.car.garage.dao.UsersRepository;

import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.stage.Stage;

@SpringBootApplication
@ComponentScan
@EnableJpaRepositories("com.car.garage.dao")
public class CarGarageApplication extends Application {

private ConfigurableApplicationContext mainContext;
private Parent rootNode;

@Autowired
UsersRepository usersRepository;

public static void main(String[] args) {
Application.launch(args);
}

@Override
public void init() throws Exception {
mainContext = SpringApplication.run(CarGarageApplication.class);
FXMLLoader loader = new FXMLLoader(getClass().getResource("/fxml/WelcomePage.fxml"));
loader.setControllerFactory(mainContext::getBean);
rootNode = loader.load();
}

@Override
public void start(Stage primaryStage) throws Exception {
primaryStage.setScene(new Scene(rootNode));
primaryStage.setResizable(false);
primaryStage.show();
System.out.println(usersRepository);
}

@Override
public void stop() throws Exception {
mainContext.close();
}
}

UsersRepository.java

package com.car.garage.dao;

import org.springframework.data.repository.CrudRepository;
import org.springframework.stereotype.Repository;

import com.car.garage.model.User;

@Repository
public interface UsersRepository extends CrudRepository<User, Long> {

}

User.java

package com.car.garage.model;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;

@Entity
public class User {

@Id
@GeneratedValue
private Long id;

private String username;
private String password;

public User(String username, String password) {
super();
this.username = username;
this.password = password;
}

public Long getId() {
return id;
}

public void setId(Long id) {
this.id = id;
}

public String getUsername() {
return username;
}

public void setUsername(String username) {
this.username = username;
}

public String getPassword() {
return password;
}

public void setPassword(String password) {
this.password = password;
}

}

编辑:

mainContext.getBean(UsersRepository.class) 返回 UsersRepository 的正确 bean 实例,但为什么 @Autowired 不起作用

最佳答案

我们应该遵循以下方法来 Autowiring 存储库类。因为从 Autowiring 另一个类的地方必须具有 SPRING STEREOTYPES 类(@Component、@Service 等)

@Component
public class Anotherclass{

@Autowired
private UsersRepository usersRepository;
}

关于java - Spring Boot + JavaFx Autowiring 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58006602/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com