Я создаю приложение Spring Boot и получаю исключение NullPointerException в компоненте @Autowired.
Я проверил аннотации и пометил свои интерфейсы и классы служб как @ Service.
Я также создал файл конфигурации Java, чтобы указать базовые пакеты для сканирования компонентов, но проблема сохраняется.
Пока я представляю свой код:
package gr.parisk85.dnd35cg.helper.skill;
@Service
public class BarbarianSkillStrategy implements SkillStrategy {
private static final double MAX_RANKS = 4;
private static final double RANK_COST = 1;
@Autowired
private DnDClassService dnDClassService;
@Override
public List<CharacterSkillDTO> select(List<DnDSkill> dndSkills) {
List<CharacterSkillDTO> characterSkillDTOList = dndSkills.stream()
.map(skill -> CharacterSkillMapper.map(skill))
.collect(Collectors.toList());
Optional<DnDClass> dnDClass = dnDClassService.findDnDClassByClassName(Constants.BARBARIAN);
characterSkillDTOList
.stream()
.filter(skill -> dnDClass.get().getClassSkills().contains(skill))
.forEach(skill -> {
skill.setMaxRanks(MAX_RANKS);
skill.setRankCost(RANK_COST);
});
return characterSkillDTOList;
}
}
Исключение выдается встрока:
Optional<DnDClass> dnDClass = dnDClassService.findDnDClassByClassName(Constants.BARBARIAN);
Отладчик показывает, что dnDClassService имеет значение null.
Выше SkillStrategyInterface также помечен как @Service:
package gr.parisk85.dnd35cg.helper.skill;
@Service
public interface SkillStrategy {
List<CharacterSkillDTO> select(List<DnDSkill> dndSkills);
}
Интерфейс DnDClassService:
package gr.parisk85.dnd35cg.service;
@Service
public interface DnDClassService {
Optional<DnDClass> findDnDClassByClassName(String name);
}
И класс Impl:
package gr.parisk85.dnd35cg.service.impl;
@Service
public class DnDClassServiceImpl implements DnDClassService {
@Autowired
private DnDClassRepository dnDClassRepository;
@Override
public Optional<DnDClass> findDnDClassByClassName(String name) {
return dnDClassRepository.findDnDClassByClassName(name);
}
}
Я также написал класс конфигурации на случай, если я испортил компонентное сканирование:
package gr.parisk85.dnd35cg.config;
@Configuration
@ComponentScan(basePackages = {
"gr.parisk85.dnd35cg.helper.skill",
"gr.parisk85.dnd35cg.helper",
"gr.parisk85.dnd35cg.service",
"gr.parisk85.dnd35cg.service.impl"
})
public class ApplicationConfig {
}
Вы можете найти мойЗавершить проект на моем github:
Завершить проект
Заранее спасибо за помощь.