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