Spring bean-компонент вызывает нулевой указатель
У меня есть класс регистратора, который использует сервис. Каждый раз, когда создается новый регистратор, я ожидаю, что у меня будет доступ к сервису регистрации синглтона.
Я автоматически подключаю службу регистрации к регистратору, однако возвращается исключение нулевого указателя. Я попробовал несколько решений:
вручную определяя компонент в контексте приложения,Попытка заставить логгер работать с пружиной, но это привело к большему количеству проблем.Я пытаюсь заставить это работать в моих тестах junit, и я указываю файл контекста, чтобы использовать другой контекст приложения. Однако, даже если он остается идентичным, это не решает проблему.
Пожалуйста, найдите код ниже:
Ниже приводится выдержка из контекста приложения.
<context:component-scan base-package="com.platform"/>
<bean id="asyncLoggingService" class="com.platform.services.AsyncLoggingServiceImplementation" scope="prototype"/>
Ниже приведен класс Logger.
package com.platform.utils;
import com.platform.services.AsyncLoggingService;
import org.joda.time.DateTime;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
public class OurLogger
{
private static Logger logger;
@Autowired
private AsyncLoggingervice asyncLoggingService;
public OurLogger(Class Clazz)
{
logger = LoggerFactory.getLogger(Clazz);
}
public void trace(TraceableObject object, String message)
{
//Do nothing yet
}
}
Затем я использую Logger в другом сервисе, чтобы регистрировать происходящее. (Причина, по которой я пишу другой регистратор, состоит в том, чтобы использовать сервер RabbitMQ). В сервисе я создаю новый экземпляр Регистратора, а затем использую его соответствующим образом.
@Service
public class AsyncAccountServiceImplementation implements AsyncAccountService
{
private static final String GATEWAY_IP_BLOCK = "1";
private static OurLogger logger = new OurLogger(AsyncAccountServiceImplementation.class);
...
}
Нулевой указатель встречается вOurLogger
когда я пытаюсь вызвать любой метод наasyncLoggingService
.
Затем я пытаюсь проверитьAsyncAccountService
используя JUnit. Я уверен, что я добавляю другой контекст приложения, но он все еще, кажется, приводит к исключению нулевого указателя.
Если вам нужна дополнительная информация, пожалуйста, дайте мне знать. Я видел способы исправить это, но они, кажется, не работают, так что, возможно, я где-то допустил ошибку или не совсем все понимаю.