Ответ такой, когда конструктор сервиса 2 вызывает сервис 1, его ещё не существует, так как Spring "вживляет" зависимость, после его создания, и закономерно возникает
NullPointerException.
Получается, что если использовать зависимость в конструкторе, то важно чтобы "вживлялась" эта зависимость через конструктор.
ackage a.b.c;
import a.b.MyService1;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Service;
@Service
@Scope("prototype")
public class MyService2 {
public MyService2(MyService1 myService1) {
myService1.doSmth("ewg");
}
}
Или так тоже будет работать:
package a.b.c;
import a.b.MyService1;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Service;
@Service
@Scope("prototype")
public class MyService2 {
@Autowired
private MyService1 myService1;
public void doSmth() {
myService1.doSmth("");
}
}