Но когда мы используем аннотацию в классах, какую область видимости они имеют?
Они являются одиночными, если вы не используете @Scope
и не указываете другую область.
Они создают один объект только для тех классов в JVM?
Spring создает один объект на контейнер.Это важно, поскольку ваша JVM может запускать несколько контейнеров Spring одновременно.
Будет ли веб-приложение безопасным для потоков?
Это зависит от вас.Spring может гарантировать, что операции жизненного цикла над компонентом выполняются поточно-ориентированным способом (например, экземпляр компонента публикуется поточно-безопасно).Однако Spring не может предсказать логику вашего приложения и то, как вы определяете его правильность.По этой причине он не обеспечивает какой-либо уровень синхронизации, который может быть недостаточным или чрезмерным.
Хорошая дискуссия по этой части: здесь .