Я в настоящее время пытаюсь понять бобы в Spring.Я пытаюсь понять Beans по сценарию, который в настоящее время происходит в моем проекте.У меня есть приложение Spring в контейнере Docker.Во время запуска мое приложение должно создать тяжелый экземпляр, создание которого занимает много времени.Мое приложение подключено через очередь сообщений.Каждый раз, когда мое приложение получает сообщение, оно должно использовать мой тяжелый экземпляр для продолжения работы с сообщением.
Я понимаю, что bean-компонент Spring по умолчанию является Singleton, и без какой-либо конфигурации невозможно создать другой экземпляр.Spring всегда будет использовать первый экземпляр при первом вызове.
Теперь я хочу создать класс обычного пользователя, который содержит объект.aObject был создан во время запуска и имеет всю информацию, которая мне нужна.Если я обновлю сейчас мой aObject с updateAObject ().Изменит ли мой aObject новое значение для всех классов, которые используют мой класс CustomeA?Нужно ли мне решать проблемы с параллелизмом?
Я написал Junittest, но не могу подтвердить, что мое решение -ok-
Извините за мой не очень хороший английский.Я пытаюсь поправиться.
@Component
@Scope(value = ConfigurableBeanFactory.SCOPE_SINGLETON)
public class CustomeA {
private ClassA aObject;
public ClassA() {
this.aObject = createHeavyCostInstance();
}
public ClassA createHeavyCostInstance() {
// do something here that takes long time to do
return object;
};
public ClassA updateAObject() {
this.aObject = update();
}
// Getter and Setter
}
@Configuration
@ComponentScan("com.package.config.dummy")
public class AppConfig {
}
//TestClass
@Test
public void testConfig() {
AnnotationConfigApplicationContext context =
new AnnotationConfigApplicationContext(AppConfig.class);
ClassA classA = context.getBean(ClassA.class);
classA.getAObject();
classA.setAObject(new Object());
ClassA classA_two = context.getBean(classA.class);
classA_two.getAObject();
context.close();
}