java - Java ServiceImpl 方法不断返回 null
问题描述
我是使用 MVC 和 spring 的新手,并且在添加服务文件时遇到了麻烦。我有 3 个文件:Controller.java、Service.java 和 ServiceImpl.java。我的目标是将现有 Controller 类中的所有当前服务逻辑移动到服务级别,所以我知道方法中的逻辑不是问题。我面临的问题是我尝试从服务调用的所有方法Controller.java 中的 .java 返回 null 并导致空指针错误。
我已经看到许多自动装配变量为空的解决方案,但我很确定这不是我的问题。
控制器.java
package project.controller;
import project.type.ServiceType;
import project.service.Service;
@Controller
public class Controller {
@Autowired
private final Service service;
@Autowired
public Controller(final Service service) {
this.service = service;
}
@RequestMapping(method = RequestMethod.POST)
public @ResponseBody Object post() {
ServiceType var1 = service.serviceMethod(true); ---> always sets var1 to null
service.serviceMethod2(var1); ---> Throws NPE
switch (var1) {
case SUCCESS:
return "Success";
case FAILURE:
return "Failure";
default:
return null;
}
}
}
服务.java
package project.service;
public interface Service{
public ServiceType serviceMethod(boolean bool);
public ServiceType serviceMethod2(ServiceType serviceType);
}
ServiceImpl.java
package project.service.impl;
import project.type.ServiceType;
import project.service.Service;
@Service
public class ServiceImpl implements Service{
@Override
public ServiceType serviceMethod(boolean bool){
if(bool){
return ServiceType.SUCCESS;
}
return ServiceType.FAILURE;
}
@Override
public ServiceType serviceMethod2(ServiceType serviceType){
*calculate*
}
}
服务类型.java
package project.type;
public enum ServiceType {
SUCCESS,
FAILURE
}
服务配置.java
package project.config;
import Service;
import ServiceImpl;
@Configuration
public class ServiceConfig {
@Bean
public Service Service() {
return new ServiceImpl();
}
}
在 IntelliJ 中可以看到我的服务变量 =“服务”,所以它似乎是从正确的位置拉出来的。
我已尽力以通用方式重新创建我的代码。我觉得缺少一些可能导致此问题的小连接,因此非常感谢您对为什么会发生这种情况的任何想法!
解决方案
请加
@ComponentScan(basePackages = "project")
@Configuration
在您的配置文件中。作为春天必须知道从哪里采摘你的豆子。
随着您方法的可见性变化
public ServiceType serviceMethod(boolean bool){
if(bool){
return ServiceType.SUCCESS;
}
return ServiceType.FAILURE;
}
public ServiceType serviceMethod2(ServiceType serviceType){
/**calculate**/
return ServiceType.SUCCESS;
}
推荐阅读
- c# - 对齐大文本文件
- wso2 - WSO2 EI:通过 REST API 调用时使用提供 INCOMPATIBLE_PARAMETERS_ERROR 的数据服务
- sublimetext3 - Sublime Text 侧边栏可以为其树形视图提供线条指南吗?
- oauth - 在 OAUTH/OpenID-Connect 之前询问用户名或唯一身份
- elasticsearch - ElasticSearch 搜索查询不区分大小写
- python - 使用值列表作为条件屏蔽 DataFrame
- sql - ORACLE 如果任何字段更改,则添加新记录
- mesos - 有没有办法在 Apache mesos master quorum 中强制重新选举?
- tensorflow - 使用 toco(tensorflow) 将 .Pb 过滤器转换为 tflite 时出错
- amazon-web-services - 我可以在单个 AWS Beanstalk 实例/集群上为 Docker 映像运行多个应用程序或容器吗?