下午好,我在这里尝试执行的操作是通过CUSPP验证是否有一个对象将成为我的ID,但是此验证是在@Controller外部完成的,因此我想在AffiliateActiveV中进行该操作,然后通过AfiliadoActivoV obj = new AfiliadoActivoV()
调用它,然后用数据AfiliadoActivoV(cuspp)
填充它。
我需要在@Controller类之外进行验证,因为SonarLint告诉我该类太大了。
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
答案 0 :(得分:0)
它只是一个空指针这一事实告诉您Spring甚至没有尝试找到要在此处注入的bean。 Spring会告诉您是否尝试注入@Autowired但找不到匹配的bean。
这意味着AfiliadoActivoV
不会被Springs Component-Scanning收集到,它会收集所有可使用CDI的类。
使用@Component
或@Service
@Component
public class AfiliadoActivoV {
确保在组件扫描期间可以找到该类。
如果您依赖于基于注释的配置,则您有一个用@SpringBootApplication
进行注释的类。默认情况下,SpringBoot将仅扫描此目录和Bean类的所有子目录。
我想您的@SpringBootApplication
类位于AfiliadoActivoV
的子目录或兄弟目录中。
在这种情况下,您可以修改您的类结构或使用@ComponentScan("...")