powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Java [игнор отключен] [закрыт для гостей] / Совет по архитектуре Spring MVC
19 сообщений из 69, страница 3 из 3
Совет по архитектуре Spring MVC
    #39867810
capfreedom228
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PetroNotC Sharpcapfreedom228
Код: java
1.
Kassa a = new Kassa(settings1);

получается, нас в контексте задачи не интересует параметер settings1 или 2...
Это твои проблемы.
ЗАЧЕМ ЗАДАНИЕ ПРИВЯЗЫВАТЬ К КАССЕ?

Я в курсе, что это мои проблемы. Клиент формирует задание для конкретной кассы, такова бизнес логика.
Заданием может быть например перезагрузка кассы, или обновление каких то настроек или печать чека, все это относится к конкретной кассе.
...
Рейтинг: 0 / 0
Совет по архитектуре Spring MVC
    #39867812
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharpнет). Если в переменной settings одна и та же КассаИменемПети)
ну да если
PetroNotC Sharpполучается, нас в контексте задачи не интересует параметер settings1 или 2...
...
Рейтинг: 0 / 0
Совет по архитектуре Spring MVC
    #39867823
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
capfreedom228,
Наконец то ты сформировал все ТЗ.
Решение в моем первом посте. Гадал на кофейной гуще.
...
Рейтинг: 0 / 0
Совет по архитектуре Spring MVC
    #39867835
capfreedom228
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PetroNotC Sharpcapfreedom228,
Наконец то ты сформировал все ТЗ.
Решение в моем первом посте. Гадал на кофейной гуще.

Спасибо, но это абстрактное решение.
В нем ни слова про Spring. Вопрос то был именно в том, чтобы выяснить, как в рамках спринга это красиво реализовать.
Или выяснить, что стандартные компоненты не подходят и надо либо искать другие, либо писать свои.
...
Рейтинг: 0 / 0
Совет по архитектуре Spring MVC
    #39867838
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
capfreedom228В нем ни слова про Spring.а задача не для спринга))
Что поделать.
Тут противоречие. Либо просто и логично, либо спринг, будь он неладен))
...
Рейтинг: 0 / 0
Совет по архитектуре Spring MVC
    #39867839
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
capfreedom228,
Стоп. Спинг MVC это ГУИ.
Образец - Цветочный магазин.
И не мешай сюда свои кассы убогие.
...
Рейтинг: 0 / 0
Совет по архитектуре Spring MVC
    #39867841
capfreedom228
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Sergunkacapfreedom228пропущено...


В таске зафиксирован id кассы, т.е. каждый таск предназначен конкретной кассе.

Как то уж совсем тупенько. Вот к примеру мой учебный пример на основе пулэкзекьютора написанный пятью годам ранее. Классическая задача Дейкстры - спящий парикмахер

https://vyatkins.wordpress.com/2013/12/21/sleeping-barber-problem/

https://github.com/SVyatkin/KafkaSleepingBarberProblem/blob/master/src/main/java/com/sleeping/barber/blockingQueue/BlockingQueueSleepingBarbersPoolExecutor.java

Нет там большой проблемы передать параметр

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
	class Barber extends Thread {
		BlockingQueue<Integer> queue = null;
		private String name;

		public Barber(BlockingQueue<Integer> queue, String name) {
			this.name = name;
			this.queue = queue;
		}

		public void run() {
			while (true) { // runs in an infinite loop

				try {
					Integer i = this.queue.poll(OFFICE_CLOSE,
							TimeUnit.MILLISECONDS);
					if (i == null)
						break; // barber slept for long time (OFFICE_CLOSE) no
								// more clients in the queue - close office
					this.cutHair(i); // cutting...

				} catch (InterruptedException e) {
				}
			}
		}

		public void cutHair(Integer i) {
			System.out.println("The barber " + this.name
					+ " is cutting hair for customer #" + i);
			try {
				sleep(BARBER_TIME);
			} catch (InterruptedException ex) {
			}
		}
	}



Что там за таск такой? Код покажи?

Заданием может быть например перезагрузка кассы, или обновление каких то настроек или печать чека, все это относится к конкретной кассе.

Вот например задание на печать чека:
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
{
  "inn": "1111111111", // по инн однозначно определяется касса
  "request": {
    "type": "sell",
    "taxationType": "osn",
    "ignoreNonFiscalPrintErrors": false,
    "electronically": false,
    "operator": {
      "name": "Иванов",
      "vatin": "123654789507"
    },
    "clientInfo": {
      "emailOrPhone": "+7912345678"
    },
    "items": [
      {
        "type": "position",
        "name": "Бананы",
        "price": 1.0,
        "quantity": 1.0,
        "amount": 1.0,
        "paymentObject": "commodity",
        "tax": {
          "type": "vat18"
        }
      },
      {
        "type": "position",
        "name": "Апельсины",
        "price": 1.0,
        "quantity": 1.0,
        "amount": 1.0,
        "paymentObject": "commodity",
        "tax": {
          "type": "vat18"
        }
      }
    ],
    "payments": [
      {
        "type": "cash",
        "sum": 2.00
      }
    ]
  }
}
...
Рейтинг: 0 / 0
Совет по архитектуре Spring MVC
    #39867862
chpasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
capfreedom228как в рамках спринга это красиво реализовать
что мешает заинжектить applicationcontext и инстанциировать нужное кол-во бинов-касс?
...
Рейтинг: 0 / 0
Совет по архитектуре Spring MVC
    #39867952
capfreedom228
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
chpashacapfreedom228как в рамках спринга это красиво реализовать
что мешает заинжектить applicationcontext и инстанциировать нужное кол-во бинов-касс?

Думаю ничего не мешает, я только толкового примера не нашел как это делать.
...
Рейтинг: 0 / 0
Совет по архитектуре Spring MVC
    #39867960
capfreedom228
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PetroNotC Sharpcapfreedom228,
Стоп. Спинг MVC это ГУИ.
Образец - Цветочный магазин.
И не мешай сюда свои кассы убогие.

Если ГУИ в твоем мире выглядит как json, то да ГУИ.
...
Рейтинг: 0 / 0
Совет по архитектуре Spring MVC
    #39867965
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
capfreedom228PetroNotC Sharp,
Post из фронта прилетает из браузера.
capfreedom228Если ГУИ в твоем мире выглядит как json, то да ГУИ.
У меня с памятью все отлично. А у вас?
...
Рейтинг: 0 / 0
Совет по архитектуре Spring MVC
    #39868003
chpasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
capfreedom228Думаю ничего не мешает, я только толкового примера не нашел как это делать
1) scope = prototype у бина
2) инжектим ApplicationContext в то место, где бины создавать надо, context.getBean(DeviceWorker.class)
дальше как по архитектуре удобнее - либо с помощью async, либо вручную с помощью Executors
...
Рейтинг: 0 / 0
Совет по архитектуре Spring MVC
    #39868067
capfreedom228
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
chpashacapfreedom228Думаю ничего не мешает, я только толкового примера не нашел как это делать
1) scope = prototype у бина
2) инжектим ApplicationContext в то место, где бины создавать надо, context.getBean(DeviceWorker.class)
дальше как по архитектуре удобнее - либо с помощью async, либо вручную с помощью Executors

Спасибо, попробую.
...
Рейтинг: 0 / 0
Совет по архитектуре Spring MVC
    #39868130
Фотография fixxer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chpashacapfreedom228Думаю ничего не мешает, я только толкового примера не нашел как это делать
1) scope = prototype у бина
2) инжектим ApplicationContext в то место, где бины создавать надо, context.getBean(DeviceWorker.class)
дальше как по архитектуре удобнее - либо с помощью async, либо вручную с помощью Executors

Это антипаттерн, дети, не делайте так. Для просветления смотреть Жеку Борисова
YouTube Video
...
Рейтинг: 0 / 0
Совет по архитектуре Spring MVC
    #39868187
chpasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fixxerЭто антипаттерн, дети
с удовольствием посмотрю на более кошерный способ создать N экземпляров в рантайме. дядя.

fixxerДля просветления смотреть
какая минута?

fixxerЖеку Борисова
Жеке привет
...
Рейтинг: 0 / 0
Совет по архитектуре Spring MVC
    #39868206
Фотография fixxer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chpasha,

YouTube Video
...
Рейтинг: 0 / 0
Совет по архитектуре Spring MVC
    #39868222
chpasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fixxerсороковая минутаобъяснение про контекст имело смысл во времена xml - говорить о том, что у нас в классе появилась явная зависимость от spring при наличии N аннотаций того же спринга в этом же классе, серьезно? Но метод с абстрактным классом действительно неплох. Я даже когда-то о нем помнил
...
Рейтинг: 0 / 0
Совет по архитектуре Spring MVC
    #39868405
vas0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chpashafixxerсороковая минутаобъяснение про контекст имело смысл во времена xml - говорить о том, что у нас в классе появилась явная зависимость от spring при наличии N аннотаций того же спринга в этом же классе, серьезно? Но метод с абстрактным классом действительно неплох. Я даже когда-то о нем помнил
Вообще method-injection был с первой версии спринга (когда он еще назывался interface21). За 13 лет использования спринга в проектах, мне такой способ di ни разу не понадобился. Написания собственного скопа так же ни разу не понадобилось, вполне хватало (protoype, singleton) + 3 которые добавлены в SpringMVC.

Вообщем просветления при просмотре не наступило. Вообще если бы в проекте было бы > 50 бинов с method-injection, то я бы как раз такой вариант посчитал за антипатерн. Конфигурационного кода много, а только от него близко к нулю.

Ну и вариант с переопределением scope, тоже так себе. В Spring-е такое можно сделать кучей способов. Я бы наверно выбрал просто реализовав @Component ColorProvider и просто заинжектил бы его.
...
Рейтинг: 0 / 0
Совет по архитектуре Spring MVC
    #39868416
chpasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нашел кстати еще 2 вариации на тему lookup-метода, собственно @Lookup анотация (по сути тоже самое без явного конфига) и паттерн Provider (через ObjectFactoryCreatingFactoryBean или ProviderCreatingFactoryBean). Последний вариант мне нравится больше всего, т.к. в нем меньше всего магии.

когда видишь вариант с Lookup год спустя
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
@Component
public class MyServices {
 
    @Lookup
    public MyObject createObject() {
        return null;
    }
}


то можно слегка прифигеть, что за чудеса тут творятся. с абстрактным методом чутка лучше, т.к. можно скакнуть к его имплементации и понять, что происходит. Но имхо лучший вариант, если мы инжектим фабрику объектов.

К счастью случай действительно довольно редкий.
...
Рейтинг: 0 / 0
19 сообщений из 69, страница 3 из 3
Форумы / Java [игнор отключен] [закрыт для гостей] / Совет по архитектуре Spring MVC
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]