Я понимаю, что в Spring Framework по умолчанию для компонента bean используется Singleton. Это означает, что в контейнере создается только один экземпляр компонента.Singleton класс или экземпляр в java
Но я не могу понять практически ниже сценария.
Например, класс class OneConClass сконфигурирован как singleton bean в контексте spring.xml, 1) для каждого запроса запроса для этого класса он использует тот же экземпляр. Если да, то если я позвоню, как new SingleTonClass().sum(3,4)
из другого класса и new SingleTonClass().sum(5,6)
, вернет мне результаты правильно или будет проблема несколько раз?
2) если один и тот же экземпляр используется всеми запросами, как это возможно за кулисами, что использование всего одного экземпляра используется всеми запросами? если есть 100 запросов к одному и тому же одноэлементному классу, каждый запрос должен ждать завершения предыдущего запроса?
Edit:
Пусть говорят, я использую @Autowired и не новый оператор
В моем главном классе, я пытаюсь использовать компонент настроен с помощью пружины. Пусть говорят, если MyMain вызывается несколько раз (может или не может быть одновременных вызовов), я хочу, чтобы понять точку 2 в моем посте выше (редактировать)
public class MyMain() {
@Autowired
SingleTonClass singleTonClass;
}
public class SingleTonClass {
private int a=0;
private int b=0;
public int sum(int a ,int b) {
return a+b;
}
}
На самом деле, этот конкретный пример выглядит лучше было бы для статического метода, а не класс синглтона. Тем не менее, я уверен, что это потому, что вы никогда не используете конструктор, а только такой метод, как 'SingletonClass.getInstance()', который возвращает singleton. –
Я предполагаю, что при настройке компонента в качестве одноэлементного кода в фреймворке вам нужно получить экземпляр из контекста приложения, иначе он будет просто другим классом с несколькими экземплярами. – BatScream
См. Http://stackoverflow.com/questions/11189907/thread-safe-stateless-design-using-spring – kamoor