При загрузке Spring / Spring какая стратегия реализации двух приведенных ниже лучше?
Первая:
@Component
Class ServiceA{
ServiceB b;
public ServiceA(ServiceB b) {
this.b = b;
}
}
, где ServiceB также равен @Component
.
Секунда:
@Component
Class ServiceA{
ServiceB b;
public ServiceA() {
this.b = new ServiceB();
}
}
, где ServiceB - это обычный класс без аннотации Spring.
Из того, что я знаю, Spring создает только один экземпляр класса @Component
как синглтон. Поэтому, если я правильно понимаю, обе стратегии создают экземпляр только одного экземпляра ServiceA и ServiceB (в методе 2 new ServiceB()
был вызван только один раз, поскольку существует только один экземпляр ServiceA).
У меня был Использовал первую стратегию для моего предыдущего приложения, но недавно я обнаружил, что вторая стратегия облегчает написание тестовых случаев, поскольку мне не нужно загружать контекст Spring (или создавать экземпляры всех связанных компонентов вручную для создания родительского компонента), поэтому тестирование выполняется намного быстрее. .