java.lang.NullPointerException: пусто, когда я вызываю хранилище - PullRequest
0 голосов
/ 22 октября 2019

Добрый день, я пытаюсь проверить, существует ли через CUSPP объект, который станет моим идентификатором, но эта проверка выполняется вне моего @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 , введите описание изображения здесь

1 Ответ

0 голосов
/ 22 октября 2019

Тот факт, что это просто нулевой указатель, говорит о том, что Spring даже не пытался найти бин для внедрения здесь. Spring сообщит вам, если он попытался внедрить @Autowired, но не смог найти соответствующий компонент.

Это означает, что AfiliadoActivoV не было обнаружено при сканировании компонентов Springs, которое собирает все классы, поддерживающие CDI.

  1. Аннотируйте свой класс с помощью @Component или @Service

    @Component
    public class AfiliadoActivoV {
    
  2. Убедитесь, что класс можно найти во время сканирования компонента. Если вы полагаетесь на конфигурацию на основе аннотаций, у вас есть класс, помеченный @SpringBootApplication. По умолчанию SpringBoot будет сканировать только этот каталог и ВСЕ ПОДРАЗДЕЛЕНИЯ на предмет Bean-классов.

Полагаю, ваш @SpringBootApplication -класс находится в подкаталоге или дочернем каталоге AfiliadoActivoV.

В этом случае вы можете либо изменить структуру класса, либо использовать @ComponentScan("...")

...