Назад к вопросам
Junior — Middle
55
Можешь продемонстрировать пример, когда используется область прототипа для бинов в Spring?
Ответ от нейросети
sobes.tech AI
В Spring область прототипа (scope = "prototype") используется, когда нужно создавать новый экземпляр бина при каждом запросе. В отличие от синглтона, где один и тот же объект используется повторно, прототип гарантирует, что каждый вызов получает свежий объект.
Пример:
@Component
@Scope("prototype")
public class UserSession {
private final String sessionId = UUID.randomUUID().toString();
public String getSessionId() {
return sessionId;
}
}
// В другом бине
@Component
public class UserService {
@Autowired
private ApplicationContext context;
public void printSessionId() {
UserSession session1 = context.getBean(UserSession.class);
UserSession session2 = context.getBean(UserSession.class);
System.out.println(session1.getSessionId()); // уникальный ID
System.out.println(session2.getSessionId()); // другой уникальный ID
}
}
Здесь каждый вызов context.getBean(UserSession.class) создаёт новый объект UserSession с уникальным sessionId.