В настоящее время я работаю над веб-приложением, использующим Angular 7 для внешнего интерфейса, подпружиненную загрузку для внутреннего (в котором я разрабатываю полноценный веб-сервис).
Я использую аннотацию @Autowired, чтобы внедрить мои сервисы друг в друга и в мой контроллер покоя. Проблема в том, что в некоторых моих службах есть некоторые атрибуты, которые становятся общими, когда внедрение выполняется. Как мне это предотвратить?
import org.springframework.stereotype.Service;
import org.springframework.beans.factory.annotation.Autowired;
@Service
public class ServiceA {
private boolean test;
public ServiceA (){
test = true;
}
public changeValues(){
test = false;
}
}
@Service
public class ServiceB {
@Autowired
private ServiceA serivceA;
public void method1() {
serviceA.changeValues();
}
}
@Service
public class ServiceC {
@Autowired
private ServiceA serivceA;
public void method2(){
if(serviceA.getTest()){
doSomethingNeeded();
}
}
}
public class Application{
@Autowired
private ServiceB b;
@Autowired
private ServiceC c;
public static void main(String[] args) {
b.method1();
c.method2();
}
}
В этом случае метод doSomethingNeeded()
в ServiceC
не сможет быть выполнен, поскольку ресурсный тест `1006 * совместно используется как ServiceB
, так и ServiceC
. Как мне предотвратить Это?
P.S. В моем случае инъекции зависимостей слишком сложны для применения каких-либо модификаций к сервисам, поэтому мне нужен способ настроить spring-ioc
внедрение зависимостей таким образом, чтобы создавать экземпляры личных атрибутов для каждого сеанса клиента.