Как ограничить область логического контекста вызова

Я поместил некоторые данные в контекст вызова ( CallContext.SetData (key, data) ), где данные относятся к типу, который реализует ILogicalThreadAffinative . Причина, по которой он реализует ILogicalThreadAffinative, заключается в том, что он должен совместно использоваться несколькими потоками в текущем приложении.

Однако приложение также выполняет удаленные вызовы другой службы, и здесь возникает проблема. Моя реализация ILogicalThreadAffinative не сериализуема и не должна. Даже если бы я пометил его как сериализуемый, удаленное приложение не имеет доступа к сборке, в которой объявлен тип, поэтому оно не сможет десериализовать его. Моя текущая практика с @Autowired проиллюстрирована следующим образом: @Autowired private SomeType someMemberVariable; Лучше ли использовать метод установки и / или ...

Я использую Spring 3.0.x в своем проекте. Моя текущая практика с @Autowired проиллюстрирована следующим образом:


 @Autowired
 private SomeType someMemberVariable;

Является ли использование метода установки лучше и / или предпочтительнее? Под установщиком я подразумеваю следующее:


 private SomeType someMemberVariable;

 @Autowired
 private void setSomeMemberVariable(SomeType newValue)
 {
  someMemberVariable = newValue;
 }

Я понимаю изменяемые и неизменяемые сеттеры, это выходит за рамки этого вопроса.

12
задан Sean Patrick Floyd 11 November 2010 в 08:26
поделиться