SonarQube не видит @RequiredArgsConstructor для @Service, какой-нибудь совет? - PullRequest
0 голосов
/ 18 января 2019

Для всех моих @Component и @Service я использую

@RequiredArgsConstructor(onConstructor = @__(@Autowired)).

Это делает код намного чище и прекрасно работает.

Но SonarQube принимает это только для компонентов. Все поля в классах обслуживания имеют критическую проблему:

"Аннотируйте этот элемент с помощью" @Autowired "," @Resource "," @Inject "или "@Value" или удалите его. "

Есть ли решение, чтобы исправить это или обходной путь? Я не хочу отключать правило, потому что оно иногда помогает.

Мой код:

@Service
@RequiredArgsConstructor(onConstructor = @__(@Autowired))
public class fooService {

private final FooDAO fooDAO; // Annotate this member with "@Aurowired"...

// rest of the class
}

1 Ответ

0 голосов
/ 18 января 2019

Чтобы ответить на ваш вопрос, вы можете просто отключить правила, которые вам не нужны, в SonarQube, он полностью настраивается под ваши нужды.

И, начиная с версии 4.3 Spring, вам даже не нужно помещать аннотацию @Autowired, если у вас есть только один конструктор, он неявный, см. Spring doc . Так что вам нужно только это:

@Service
@RequiredArgsConstructor
public class FooService {
  private final FooDAO fooDAO;
}
...