0

я видел следующее определение в коде:Есть ли причина проксирования одного компонента bean?

@Scope(proxyMode = ScopedProxyMode.TARGET_CLASS) 
@Component 
public class SomeComponent { 
    <...> 
} 

Это одноэлементно области действия боба. И мне кажется, что нет причин прокси-сервера. Насколько я понимаю, мы должны проксировать bean-компонент в случае, если его область не является одиночной и отличается от области действия другого компонента, в который мы его будем вводить.

Возможно, я ничего не знаю. Что может быть причиной прокси-синтаксиса?

ответ

0

После расследования я нашел ответ на мой вопрос в an outdated Spring's documentation:

Вам не нужно использовать <aop:scoped-proxy/> в сочетании с фасолью, которые контекстной, как одиночки или прототипы. Это ошибка, чтобы попытаться создать прокси-объект с областью действия для одноэлементного компонента (и полученный в результате BeanCreationException, безусловно, поставит вас прямо в этом отношении).

Это отвечает на мой вопрос, потому что <aop:scoped-proxy/> является альтернативой для @Scope аннотации. Но current documentation отличается от старого:

Вы можете также использовать <aop:scoped-proxy/> между бобами, которые контекстными, как синглтон, со ссылкой затем происходит через промежуточный прокси-сервер, который сериализации и, следовательно, возможность повторного получения целевого одноплодной боб по десериализации.

Это значит, что вы не увидите BeanCreationException в случае, если вы попытаетесь определить прокси-сервер с одним ядром. Но в любом случае я не совсем понимаю цель этого расплывчатого варианта использования. Итак, если кто-то понимает, что означает это заявление, пожалуйста, проясните его в комментариях.

Заключение: В большинстве случаев нет причин для проксирования одного компонента с биполярным элементом.

0

Что касается контекстной прокси: Это то, что написано в Spring documentation

Note: 


    You do not need to use the <aop:scoped-proxy/> in conjunction with beans that are scoped as singletons or prototypes. It is an error to try to create a scoped proxy for a singleton bean (and the resulting BeanCreationException will certainly set you straight in this regard). 

Хотя это относится довольно старая версия, но нота остается в силе ИМА. Я никогда не пробовал это самостоятельно.

Сказав это, может быть множество причин для прокси-синтаксиса, «прокси» - очень широкая концепция. Например, когда мы используем @Transactional его прокси, есть много других примеров. Дело в том, что это не «ограниченный прокси», который можно рассматривать как очень специфический вид прокси, который, по-видимому, не применим к синглонам.

Надеюсь, что это поможет

 Смежные вопросы

  • Нет связанных вопросов^_^