Я действительно не знаю, почему мой интерфейс CRUDRepository не может быть введен.
У меня есть небольшое приложение на Spring Boot и я использую CrudRepository:
public interface ActionLogRepository extends CrudRepository<ActionLog, Integer> {
}
В моем классе обслуживания у меня естьметод:
@Service
public class ActionRecordServiceImpl implements ActionRecordService {
@Override
@Transactional
public void deleteActionRecord(Date date, String domain) {
Set<Action> actions= myActions...(the code delibrately shortened)
for (Action a : actions) {
actionRepository.delete(a);
}
}
}
}
Далее у меня есть мой перехватчик - я хочу перехватить все операции удаления и сохранить эти журналы в базе данных:
public class ActionTrackerInterceptor extends EmptyInterceptor {
// called when record is deleted.
public void onDelete(Object entity, Serializable id, Object[] state,
String[] propertyNames, Type[] types) {
Action act = (Action) entity;
String action = "DELETED";
ActionLog actionLog = new ActionLog(...some data inserted...);
MyActionLogUtil util = new MyActionLogUtil();
util.logIt("DELETED", actionLog);
actionLogRepository.save(actionLog);
System.out.println("Record " + entity + " is deleted.");
}
И мой метод util.LogIt выглядит так:
@Component
public class MyActionLogUtilImpl implements ActionyLogUtil {
private ActionLogRepository actionLogRepository;
@Autowired
public void setActionLogRepository(ActionLogRepository actionLogRepository) {
this.actionLogRepository = actionLogRepository;
}
@Override
public void logIt(String action, ActionLog entity) {
try {
ActionLog actionLog = null; // = new ActionLog(...some data inserted...)
actionLogRepository.save(actionLog);
} finally {
}
}
}
Когда мое приложение запускается, устанавливается метод setActionLogRepository в MyActionLogUtilImpl и корректно вводится ActionLogRepository (не нулевое значение).Но при отладке в методе MyActionLogUtilImpl.LogIt IS МОЕ actionLogRepository NULL!
Мой основной класс с @SpringBootApplication находится в верхней части пакетов, поэтому проблема ComponentScan здесь не имеет значения.
Вопрос в том, ПОЧЕМУ?Еще одна транзакция?Я действительно не знаю, в чем проблема.Я прочитал все подобные темы в Интернете ... Пожалуйста, помогите мне.Спасибо.
С уважением, Мэтли