java.lang.NullPointerException: 当我调用存储库时为空
java.lang.NullPointerException: null when I call a repository
下午好,我在这里尝试做的是通过 CUSPP 验证是否有一个对象会成为我的 ID,但是这个验证是在我的@Controller 之外完成的,因此我想在我的 AffiliateActiveV 中进行然后通过 AfiliadoActivoV obj = new AfiliadoActivoV()
调用它,然后用数据 AfiliadoActivoV(cuspp)
.
填充它
我需要在我的@Controller class 之外进行验证,因为 SonarLint 告诉我 class 变得太大了。
AfiliadoActivoRepository
@Repository
public interface AfiliadoActivoRepository extends CrudRepository<AfiliadoActivoEntity, String> {
}
AfiliadoActivoController
@RestController
@CrossOrigin(origins = "*")
public class CargaArchivoController {
@GetMapping(path = "/leertxt")
public @ResponseBody String leerArchivo() {
AfiliadoActivoV obj = new AfiliadoActivoV();
return obj.validacionCampos(item.cuspp) //This value comes from a reading made to a csv file - I have validated with a System.out.Print and if it has data
}
}
AfiliadoActivoV
public class AfiliadoActivoV {
@Autowired
AfiliadoActivoRepository crudAfiliadoActivo2;
public String validacionCampos(String cuspp) {
String respuesta="";
if(crudAfiliadoActivo2.existsById(cuspp)==true) {
respuesta= respuesta + " Error: CUSPP Duplicado";
}
}}
我附上了STS控制台出现的错误
enter image description here
它只是一个空指针这一事实告诉您 Spring 甚至没有试图找到要在此处注入的 bean。 Spring 会告诉您它是否尝试注入 @Autowired 但找不到匹配的 bean。
这意味着 AfiliadoActivoV
没有被 Springs Component-Scanning 拾取,后者收集所有 CDI-able classes。
用 @Component
或 @Service
注释您的 class
@Component
public class AfiliadoActivoV {
确保组件扫描时可以找到class。
如果你依赖基于注释的配置,你有一个 class,它用 @SpringBootApplication
注释。默认情况下 SpringBoot 将只扫描这个目录和 Bean 的所有子目录-classes.
我想你的 @SpringBootApplication
-class 位于 AfiliadoActivoV
的子目录或同级目录中。
在这种情况下,您可以修改 class-结构或使用 @ComponentScan("...")
下午好,我在这里尝试做的是通过 CUSPP 验证是否有一个对象会成为我的 ID,但是这个验证是在我的@Controller 之外完成的,因此我想在我的 AffiliateActiveV 中进行然后通过 AfiliadoActivoV obj = new AfiliadoActivoV()
调用它,然后用数据 AfiliadoActivoV(cuspp)
.
我需要在我的@Controller class 之外进行验证,因为 SonarLint 告诉我 class 变得太大了。
AfiliadoActivoRepository
@Repository
public interface AfiliadoActivoRepository extends CrudRepository<AfiliadoActivoEntity, String> {
}
AfiliadoActivoController
@RestController
@CrossOrigin(origins = "*")
public class CargaArchivoController {
@GetMapping(path = "/leertxt")
public @ResponseBody String leerArchivo() {
AfiliadoActivoV obj = new AfiliadoActivoV();
return obj.validacionCampos(item.cuspp) //This value comes from a reading made to a csv file - I have validated with a System.out.Print and if it has data
}
}
AfiliadoActivoV
public class AfiliadoActivoV {
@Autowired
AfiliadoActivoRepository crudAfiliadoActivo2;
public String validacionCampos(String cuspp) {
String respuesta="";
if(crudAfiliadoActivo2.existsById(cuspp)==true) {
respuesta= respuesta + " Error: CUSPP Duplicado";
}
}}
我附上了STS控制台出现的错误 enter image description here
它只是一个空指针这一事实告诉您 Spring 甚至没有试图找到要在此处注入的 bean。 Spring 会告诉您它是否尝试注入 @Autowired 但找不到匹配的 bean。
这意味着 AfiliadoActivoV
没有被 Springs Component-Scanning 拾取,后者收集所有 CDI-able classes。
用
注释您的 class@Component
或@Service
@Component public class AfiliadoActivoV {
确保组件扫描时可以找到class。 如果你依赖基于注释的配置,你有一个 class,它用
@SpringBootApplication
注释。默认情况下 SpringBoot 将只扫描这个目录和 Bean 的所有子目录-classes.
我想你的 @SpringBootApplication
-class 位于 AfiliadoActivoV
的子目录或同级目录中。
在这种情况下,您可以修改 class-结构或使用 @ComponentScan("...")