Sobes.tech
Back to questions
Junior — Middle
56

Можешь продемонстрировать пример, когда используется область прототипа для бинов в Spring?

Answer from AI

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.