Есть ли способ содержать разные состояния приложения в параллельно запускаемых классах с использованием Spring Framework'а?
Всем привет!
Есть проект с UI-автотестами. Есть класс, описывающий состояние веб-приложения (просто некоторые настройки, которые нужно считывать для проведения проверок, типа языка, часового пояса и т. д.). Есть тестовые JUnit-овские классы, которые запускаются параллельно, каждый в своём контейнере, вместе с приложением в браузере. Нужно, чтобы у каждого из этих классов было по собственному Spring-объекту ("бину") с состоянием, которое задаётся один раз, при запуске класса (потому что уже весь проект завязан на Spring'е), и живёт столько же, сколько живёт этот класс. Сейчас используется область singleton и поэтому там, где нужно иное состояние, приходится запускать классы последовательно, чтобы избежать конфликтов (так как бин с состоянием один на всех).
Можно ли провернуть такое с помощью Spring'а? Может быть, можно создавать свой контекст в каждом таком классе, но будут ли методы, вызываемые из этого класса, брать бин с состоянием именно из этого контекста?
Spring позволяет в рантайме создавать бины. Можно создавать бины-обёртки, каждый со своим состоянием, вызывающие оригинальный бин (его методы). Как это делается - см. видео "Спринг-потрошитель" на ютупе.