2013-10-03 6 views
-2

Пожалуйста, ответьте на следующие вопросы.Некоторые вопросы о весне

1) где загружены бобы. будут ли они загружены в Spring ApplicationContext?
ИЛИ они загружаются в кучу ApplicationContext.
2) В весеннем веб-приложении, если приложение не используется в течение дня или около того, будет ли собран мусор объекта ApplicationContext?

3) Как сделать потоки нитей безопасными?
4) какие другие объекты имеют проблемы Threadsafe весной.
5) Методы BeanPostProcessor выполняются для каждого компонента в приложении.
Как обрабатывается в случае тысяч объектов в сложном приложении.
Безопасны ли потоки beanpostProcessors?

+0

Split и уточнить вопросы, пожалуйста. – vertti

ответ

1

Думаю, вам лучше разделить эти вопросы - каждый из них заслуживает отдельную тему imho.

  1. В любом случае Spring загружает бобы для вас. Как? Он читает метаданные о компонентах (основанные на xml/аннотации) и соединяет их вместе. Поэтому весна делает для вас «новую», но как получить доступ к этому компоненту? Здесь появляется ApplicationContext. Это как контейнер для всех этих компонентов, контейнер, который позволяет получить доступ к экземпляру компонента по его имени (getBean («beanName»)). В очень упрощенном подходе вы можете придумать контекст приложения как карту бобов по имени. Я не совсем понял проблему «Кучи» здесь. Весенние бобы - это только объекты Java, живущие в JVM, так что да, в основном они загружаются в кучу. Единственное различие заключается в том, что они загружаются весной, а не кодом.

  2. Контекст приложения не будет собираться с мусором, потому что он хранится через (и доступен) из всего веб-приложения. Конечно, бобы, созданные этим контекстом приложения, могут быть собраны в мусор, если они не являются синглтонами или чем-то еще. Я знаю его неопределенный ответ, не стесняйтесь уточнить свой вопрос.

  3. Singleton в своей основной архитектуре не имеет ничего общего с безопасностью потока. Да, весна обеспечивает «Singleton». Это означает, что каждый раз, когда вы будете делать вызов getBean, вы получите тот же самый экземпляр, поэтому его синглтон (пока вы управляете этим компонентом только весной). Это определение не влияет на дизайн компонента, поэтому, если вы, скажем, создаете экземпляр этого класса, просто называя его конструктором (новое ключевое слово), вы получите совершенно другой объект этого типа, чем тот, который управляется весна. Его важно понять, где начинается весна как основа и когда она заканчивается :) Итак, если вы хотите, чтобы ваш синглтон был потокобезопасным, вы должны спроектировать его как потокобезопасный. Лучшее будет делать это без гражданства, но опять же, это не имеет ничего общего с весной, поэтому, пожалуйста, спросите об этом в другой теме или просто в Google для «потокобезопасной конструкции»

  4. Не совсем понятны вопрос, поэтому я не могу ответить, извините :(

  5. Опять же, безопасность потоков процессора bean post зависит от того, что на самом деле написано там, его код там, а не код инфраструктуры.

Надеется, что это помогает

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