下午好,我在这里尝试通过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("...")

08-06 13:32