Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 试图保存到数据库时使用Spring Boot JPA的NullPointerException_Java_Spring Boot_Jpa_Nullpointerexception - Fatal编程技术网

Java 试图保存到数据库时使用Spring Boot JPA的NullPointerException

Java 试图保存到数据库时使用Spring Boot JPA的NullPointerException,java,spring-boot,jpa,nullpointerexception,Java,Spring Boot,Jpa,Nullpointerexception,我计划处理一些交易数据,并请求检索一些我希望存储在mysql中的市场数据 从昨天开始,我一直被代码中的NullPointerException所困扰。在StackOverflow上,我经常看到错误是尝试实例化服务,例如,忘记注释 对我来说,每当我尝试使用自动连线服务时,它似乎都会出错。现在,我从主方法调用该方法(在控制器中发出数据请求)。这意味着我必须实例化才能到达那里。这可能就是问题所在。我可能缺少如何正确处理这个问题或如何将数据保存到DAO的概念。希望有人能把我引向正确的方向 请参阅下面的代

我计划处理一些交易数据,并请求检索一些我希望存储在mysql中的市场数据

从昨天开始,我一直被代码中的
NullPointerException
所困扰。在StackOverflow上,我经常看到错误是尝试实例化服务,例如,忘记注释

对我来说,每当我尝试使用自动连线服务时,它似乎都会出错。现在,我从主方法调用该方法(在控制器中发出数据请求)。这意味着我必须实例化才能到达那里。这可能就是问题所在。我可能缺少如何正确处理这个问题或如何将数据保存到DAO的概念。希望有人能把我引向正确的方向

请参阅下面的代码:

@springboot应用程序
公共类DesktopAutoTradingApplication{
公共静态void main(字符串[]args)引发JsonProcessingException{
run(DesktopAutoTradingApplication.class,args);
MarketsBinanceController MarketsBinanceController=新的MarketsBinanceController();
marketsBinanceController.saveListOfMarketsBinance();
}
@控制器
公共类MarketsBinanceController{
@自动连线
请求服务请求服务;
public void saveListOfMarketsBinance()引发JsonProcessingException{
字符串资源URL;
RestTemplate RestTemplate=新RestTemplate();
ObjectMapper mapper=新的ObjectMapper();
反应性反应;
市场金融市场金融;
资源URL=”https://api.cryptowat.ch/markets/binance";
response=restemplate.getForEntity(resourceURL,String.class);
JsonNode root=mapper.readTree(response.getBody());
JsonNode result=root.get(“result”);
系统输出打印项次(结果);
列表市场=新的ArrayList();
for(JsonNode项:结果){
marketsBinance=新的marketsBinance();
MarketsBancedto MarketsBancedto;
marketsBinanceDto=mapper.treeToValue(项,marketsBinanceDto.class);
marketsBinance.setId(marketsBinanceDto.getId());
setExchange(marketsBinanceDto.getExchange());
marketsBinance.setPair(marketsBinanceDto.getPair());
marketsBinance.setActive(marketsBinanceDto.getActive());
setRoute(marketsBinanceDto.getRoute());
添加(marketsBinance);
requestService.saveMarketsBinance(市场);
}
}
}
@服务
@交易的
公共类请求服务{
@自动连线
私人市场Nancedao市场Nancedao;
公共无效存储市场金融(列出市场){
MarketsBancedao.saveAll(市场);
}
}
@组件
公共接口市场Nancedao扩展了Crudepository{
}
@实体
公共类市场融资{
@身份证
@GeneratedValue(策略=GenerationType.AUTO)
私人长表;
私人长id;
专用字符串交换;
私有字符串对;
私有布尔活动;
专用字符串路由;
//接球手和接球手
public class MarketsBinanceDto{
私人长id;
专用字符串交换;
私有字符串对;
私有布尔活动;
专用字符串路由;
//接球手和接球手
下面是运行程序时收到的错误消息,在第一个答案中添加了建议的解决方案

Exception in thread "main" org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'Controller.MarketsBinanceController' available
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBean(DefaultListableBeanFactory.java:352)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBean(DefaultListableBeanFactory.java:343)
    at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1127)
    at com.DAT.DesktopAutoTrading.DesktopAutoTradingApplication.main(DesktopAutoTradingApplication.java:15)
2020-09-07 12:24:03.545  INFO 22756 --- [         task-1] o.h.e.t.j.p.i.JtaPlatformInitiator       : HHH000490: Using JtaPlatform implementation: [org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform]
2020-09-07 12:24:03.553  INFO 22756 --- [         task-1] j.LocalContainerEntityManagerFactoryBean : Initialized JPA EntityManagerFactory for persistence unit 'default'

您应该使用Spring创建和配置的
MarketsBinanceController
类型的bean,而不是
MarketsBinanceController-MarketsBinanceController=new-MarketsBinanceController();

要在main方法中获取这个bean,您应该获取
ApplicationContext
ApplicationContext
,您可以从
SpringApplication.run(DesktopAutoTradingApplication.class,args);
获取返回的对象。
完整的代码示例:

ConfigurableApplicationContext context = SpringApplication.run(DesktopAutoTradingApplication.class, args);
MarketsBinanceController marketsBinanceController = context.getBean(MarketsBinanceController.class);
marketsBinanceController.saveListOfMarketsBinance();

您应该使用Spring创建和配置的
MarketsBinanceController
类型的bean,而不是
MarketsBinanceController-MarketsBinanceController=new-MarketsBinanceController();

要在main方法中获取这个bean,您应该获取
ApplicationContext
ApplicationContext
,您可以从
SpringApplication.run(DesktopAutoTradingApplication.class,args);
获取返回的对象。
完整的代码示例:

ConfigurableApplicationContext context = SpringApplication.run(DesktopAutoTradingApplication.class, args);
MarketsBinanceController marketsBinanceController = context.getBean(MarketsBinanceController.class);
marketsBinanceController.saveListOfMarketsBinance();

你能添加堆栈跟踪得到的异常吗?不确定我是否完全理解这个问题(粘贴实际异常肯定会有帮助),但据我记忆所及,通过
main
方法避开了Spring所做的一些内部连接。@这一点很好。在main方法中执行
MarketsBinanceController-MarketsBinanceController=new-MarketsBinanceController();
不会注入
marketsBinanceDAO
所以
marketsBinanceDAO.saveAll()
将抛出一个空指针,因为
MarketsBancedao
为空。很难说没有异常,但有一点我可以肯定的是,
requestService
,似乎没有更新到实际的实例。@phonaputer当我无法实例化它时,我如何在控制器中执行该函数-我已经读过了y提到这可能是个问题,但想不出怎么办?你能用stack trace添加你得到的异常吗?不确定我是否完全理解这个问题(粘贴实际异常肯定会有帮助),但据我记忆所及,通过
main
方法避开了Spring所做的一些内部连接。@这一点很好。在main方法中执行
MarketsBinanceController-MarketsBinanceController=new-MarketsBinanceController();
不会注入
marketsBinanceDAO
所以
marketsBinanceDAO.saveAll()
will