Форум программистов, компьютерный форум, киберфорум
Java: Spring, Spring Boot
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
6 / 6 / 1
Регистрация: 25.02.2016
Сообщений: 342

Spring динамические контексты

30.03.2018, 17:04. Показов 1303. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравтсвуйте!

Есть Restful сервис, который принимает от пользователей запросы.
Суть в том, что когда от пользователя приходит определенный запрос, серверу нужно обработать его в контексте пользователя.
Приведу пример.
Пусть есть N каких то классов, которые пользователи через запрос вида /userId/start/{ModuleName} могут запускать (аналогично для остановки и других методов).
Мне бы хотелось, чтобы сервер запускал эти модули в потоках + у каждого модуля свои данные, которые относятся к контексту только одного пользователя.
Можно ли это реализовать через Spring? Или какие методы используют для задач такого плана?
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
30.03.2018, 17:04
Ответы с готовыми решениями:

Spring MVC. 404 ошибка при включении Spring Data JPA в проект
Добрый день. Есть простой шаблонный проект с использованием Spring MVC и Maven. С зависимостями Spring MVC проект собирается нормально и...

Перевод проекта из Spring Maven в обычный Spring MVC
Здравствуйте. Подскажите, реально ли взять готовый проект, например -...

задания по spring core и spring mvc для новичков
Какие задания можно предложить новичкам для выполнения после знакомства их с spring core и mvc ?

5
Эксперт Java
 Аватар для KEKCoGEN
2399 / 2224 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
30.03.2018, 17:51
Kertis138, не очень понятна задача. Что значит запускать классы? Приведите конкретный пример такого класса.
1
6 / 6 / 1
Регистрация: 25.02.2016
Сообщений: 342
30.03.2018, 17:59  [ТС]
Цитата Сообщение от KEKCoGEN Посмотреть сообщение
Приведите конкретный пример такого класса.
Пусть есть домен пользователя, который я получаю из БД при каждом запросе:

Java
1
2
3
4
public class User {
   private String username;
...
}
После того как сервер нашел пользователя в БД возможны 2 варианта.
1) Пользователь не запускал работу модулей
2) Пользователь запускал работу модулей

Модули:

Java
1
2
3
4
5
6
7
8
public interface Module {
   void startAsync(); 
}
 
public class Module1 implements Module {...}
public class Module2 implements Module {...}
public class Module3 implements Module {...}
public class Module4 implements Module {...}
Каждый модель может предоставлять какие то свои данные для GET запросов.
В Root контексте спринга что-то типа хранилища с песочницами пользователей.
Песочница = User + List<Module> modulesList; (Сервер в разных потоках постоянно обрабатывает логику модулей у каждого пользователя, который отправил запрос на старт. И сервер хранит список модулей и пользователей)


То есть запрос от пользователя обрабатывается в его собственной песочнице.
Я хочу сделать внедрение зависимостей в модули. Например, модуль1 хочет получить модуль2.
НО! если пользователей много, то и песочниц много, то и модулей в каждой печонице много. Мне нужно, чтобы внедрение зависимостей происходило только в рамках одной песочницы.

Собственно теперь мне интересно, можно ли в рантайме создавать контекст спринга и использовать его как песочницу?
Мне по сути нужно только внедрять зависимости в рамках песочница + если возможно, протягивать зависимости от родительского главного контекста, где у меня сервис слои от Hibernate.
0
Эксперт Java
 Аватар для KEKCoGEN
2399 / 2224 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
30.03.2018, 18:15
Kertis138, возможно вам поможет session scope bean https://docs.spring.io/spring/... 04s04.html
Так же можно хранить контекст пользователя в БД или кеше и когда приходит запрос, создавать объект контекста чтобы затем передавать его в модули. Таким образом модули остаются stateless и весь стейт сидит в объекте контекста. Зависит от ваших целей и задач.
1
6 / 6 / 1
Регистрация: 25.02.2016
Сообщений: 342
31.03.2018, 07:35  [ТС]
Нашел AutowireCapableBeanFactory для внедрения зависимостей в уже созданный объект и создания бинов в рантайме.
Собственно интересно следующее. Если представить Spring DI как большую коробку с бинами, то могу ли программно создать унаследованную такую коробку, в которую смогу внедрять бины, чтобы они не затрагивали родительские данные?
0
Эксперт Java
 Аватар для KEKCoGEN
2399 / 2224 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
31.03.2018, 10:48
Лучший ответ Сообщение было отмечено Kertis138 как решение

Решение

Kertis138, вы говорите странные вещи....вариантов два. Либо ваше приложение stateless и тогда вам достаточно обычных бинов, либо оно statefull и тогда вам нужно хранить стейт отдельно от логики чтобы получить stateless и см. предыдущий пункт.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
31.03.2018, 10:48
Помогаю со студенческими работами здесь

Spring: а как вы разрешаете зависимости для spring ?
Прикручиваю авторизацию к своему мини-серверу и таки понимаю что я 5 минут ищу решение и 15 минут ищу куда переехала вон та библиотека в...

Jetty embedded + Spring MVC + Spring Security
Добрый день. По роду работы приходилось писать на JavaSE, в том числе и сложные клиент/серверные программы. Использовал Netty, Apache...

Spring Framework - запуск примеров Spring
Здравствуйте, уважаемые форумчане, хочу освоить Spring Framework, прошу помощи у тех, кто знаком с этой технологией. Собственно есть...

Spring MVC, Spring REST
Всем привет! Изучаю фреймворк Spring и возникло несколько вопросов в процессе, на которые не уверен однозначно, что до конца понимаю....

Spring mvc spring jdbc
Простое веб приложение с использованием Spring mvc + jdbc(JdbcTemplate). Можно добавить запись в таблицу или вывести список данных из...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru