Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Java Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 2 [3]      все
 Re: Совет по архитектуре Spring MVC  [new]
capfreedom228
Member

Откуда:
Сообщений: 25
PetroNotC Sharp
capfreedom228
Kassa a = new Kassa(settings1);
получается, нас в контексте задачи не интересует параметер settings1 или 2...
Это твои проблемы.
ЗАЧЕМ ЗАДАНИЕ ПРИВЯЗЫВАТЬ К КАССЕ?


Я в курсе, что это мои проблемы. Клиент формирует задание для конкретной кассы, такова бизнес логика.
Заданием может быть например перезагрузка кассы, или обновление каких то настроек или печать чека, все это относится к конкретной кассе.
27 сен 19, 12:52    [21980788]     Ответить | Цитировать Сообщить модератору
 Re: Совет по архитектуре Spring MVC  [new]
вадя
Member

Откуда: Екатеринбург
Сообщений: 16686
PetroNotC Sharp
нет). Если в переменной settings одна и та же КассаИменемПети)

ну да если
PetroNotC Sharp
получается, нас в контексте задачи не интересует параметер settings1 или 2...
27 сен 19, 12:53    [21980790]     Ответить | Цитировать Сообщить модератору
 Re: Совет по архитектуре Spring MVC  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 2089
capfreedom228,
Наконец то ты сформировал все ТЗ.
Решение в моем первом посте. Гадал на кофейной гуще.
27 сен 19, 13:04    [21980803]     Ответить | Цитировать Сообщить модератору
 Re: Совет по архитектуре Spring MVC  [new]
capfreedom228
Member

Откуда:
Сообщений: 25
PetroNotC Sharp
capfreedom228,
Наконец то ты сформировал все ТЗ.
Решение в моем первом посте. Гадал на кофейной гуще.


Спасибо, но это абстрактное решение.
В нем ни слова про Spring. Вопрос то был именно в том, чтобы выяснить, как в рамках спринга это красиво реализовать.
Или выяснить, что стандартные компоненты не подходят и надо либо искать другие, либо писать свои.
27 сен 19, 13:19    [21980825]     Ответить | Цитировать Сообщить модератору
 Re: Совет по архитектуре Spring MVC  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 2089
capfreedom228
В нем ни слова про Spring.
а задача не для спринга))
Что поделать.
Тут противоречие. Либо просто и логично, либо спринг, будь он неладен))
27 сен 19, 13:25    [21980830]     Ответить | Цитировать Сообщить модератору
 Re: Совет по архитектуре Spring MVC  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 2089
capfreedom228,
Стоп. Спинг MVC это ГУИ.
Образец - Цветочный магазин.
И не мешай сюда свои кассы убогие.
27 сен 19, 13:27    [21980831]     Ответить | Цитировать Сообщить модератору
 Re: Совет по архитектуре Spring MVC  [new]
capfreedom228
Member

Откуда:
Сообщений: 25
Sergunka
capfreedom228
пропущено...


В таске зафиксирован 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

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

	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) {
			}
		}
	}


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


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

Вот например задание на печать чека:
{
  "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
      }
    ]
  }
}
27 сен 19, 13:30    [21980834]     Ответить | Цитировать Сообщить модератору
 Re: Совет по архитектуре Spring MVC  [new]
chpasha
Member

Откуда:
Сообщений: 8441
capfreedom228
как в рамках спринга это красиво реализовать

что мешает заинжектить applicationcontext и инстанциировать нужное кол-во бинов-касс?
27 сен 19, 13:54    [21980878]     Ответить | Цитировать Сообщить модератору
 Re: Совет по архитектуре Spring MVC  [new]
capfreedom228
Member

Откуда:
Сообщений: 25
chpasha
capfreedom228
как в рамках спринга это красиво реализовать

что мешает заинжектить applicationcontext и инстанциировать нужное кол-во бинов-касс?


Думаю ничего не мешает, я только толкового примера не нашел как это делать.
27 сен 19, 15:44    [21981042]     Ответить | Цитировать Сообщить модератору
 Re: Совет по архитектуре Spring MVC  [new]
capfreedom228
Member

Откуда:
Сообщений: 25
PetroNotC Sharp
capfreedom228,
Стоп. Спинг MVC это ГУИ.
Образец - Цветочный магазин.
И не мешай сюда свои кассы убогие.


Если ГУИ в твоем мире выглядит как json, то да ГУИ.
27 сен 19, 15:49    [21981052]     Ответить | Цитировать Сообщить модератору
 Re: Совет по архитектуре Spring MVC  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 2089
capfreedom228
PetroNotC Sharp,
Post из фронта прилетает из браузера.

capfreedom228
Если ГУИ в твоем мире выглядит как json, то да ГУИ.

У меня с памятью все отлично. А у вас?
27 сен 19, 15:53    [21981060]     Ответить | Цитировать Сообщить модератору
 Re: Совет по архитектуре Spring MVC  [new]
chpasha
Member

Откуда:
Сообщений: 8441
capfreedom228
Думаю ничего не мешает, я только толкового примера не нашел как это делать

1) scope = prototype у бина
2) инжектим ApplicationContext в то место, где бины создавать надо, context.getBean(DeviceWorker.class)
дальше как по архитектуре удобнее - либо с помощью async, либо вручную с помощью Executors
27 сен 19, 16:22    [21981111]     Ответить | Цитировать Сообщить модератору
 Re: Совет по архитектуре Spring MVC  [new]
capfreedom228
Member

Откуда:
Сообщений: 25
chpasha
capfreedom228
Думаю ничего не мешает, я только толкового примера не нашел как это делать

1) scope = prototype у бина
2) инжектим ApplicationContext в то место, где бины создавать надо, context.getBean(DeviceWorker.class)
дальше как по архитектуре удобнее - либо с помощью async, либо вручную с помощью Executors


Спасибо, попробую.
27 сен 19, 17:51    [21981193]     Ответить | Цитировать Сообщить модератору
 Re: Совет по архитектуре Spring MVC  [new]
fixxer
Member

Откуда:
Сообщений: 720
chpasha
capfreedom228
Думаю ничего не мешает, я только толкового примера не нашел как это делать

1) scope = prototype у бина
2) инжектим ApplicationContext в то место, где бины создавать надо, context.getBean(DeviceWorker.class)
дальше как по архитектуре удобнее - либо с помощью async, либо вручную с помощью Executors


Это антипаттерн, дети, не делайте так. Для просветления смотреть Жеку Борисова [url=]Spring the Reaper[/url].
27 сен 19, 19:55    [21981289]     Ответить | Цитировать Сообщить модератору
 Re: Совет по архитектуре Spring MVC  [new]
chpasha
Member

Откуда:
Сообщений: 8441
fixxer
Это антипаттерн, дети

с удовольствием посмотрю на более кошерный способ создать N экземпляров в рантайме. дядя.

fixxer
Для просветления смотреть

какая минута?

fixxer
Жеку Борисова

Жеке привет
27 сен 19, 22:16    [21981382]     Ответить | Цитировать Сообщить модератору
 Re: Совет по архитектуре Spring MVC  [new]
fixxer
Member

Откуда:
Сообщений: 720
chpasha,

[url=
Ссылка на позицию в клипе: https://youtu.be/cou_qomYLNU?t=2440
][/url] сороковая минута
27 сен 19, 23:01    [21981403]     Ответить | Цитировать Сообщить модератору
 Re: Совет по архитектуре Spring MVC  [new]
chpasha
Member

Откуда:
Сообщений: 8441
fixxer
сороковая минута
объяснение про контекст имело смысл во времена xml - говорить о том, что у нас в классе появилась явная зависимость от spring при наличии N аннотаций того же спринга в этом же классе, серьезно? Но метод с абстрактным классом действительно неплох. Я даже когда-то о нем помнил Картинка с другого сайта.
28 сен 19, 00:13    [21981427]     Ответить | Цитировать Сообщить модератору
 Re: Совет по архитектуре Spring MVC  [new]
vas0
Member

Откуда: Таможенный союз (Россия, Казахстан)
Сообщений: 1279
chpasha
fixxer
сороковая минута
объяснение про контекст имело смысл во времена xml - говорить о том, что у нас в классе появилась явная зависимость от spring при наличии N аннотаций того же спринга в этом же классе, серьезно? Но метод с абстрактным классом действительно неплох. Я даже когда-то о нем помнил Картинка с другого сайта.
Вообще method-injection был с первой версии спринга (когда он еще назывался interface21). За 13 лет использования спринга в проектах, мне такой способ di ни разу не понадобился. Написания собственного скопа так же ни разу не понадобилось, вполне хватало (protoype, singleton) + 3 которые добавлены в SpringMVC.

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

Ну и вариант с переопределением scope, тоже так себе. В Spring-е такое можно сделать кучей способов. Я бы наверно выбрал просто реализовав @Component ColorProvider и просто заинжектил бы его.
28 сен 19, 14:47    [21981658]     Ответить | Цитировать Сообщить модератору
 Re: Совет по архитектуре Spring MVC  [new]
chpasha
Member

Откуда:
Сообщений: 8441
Нашел кстати еще 2 вариации на тему lookup-метода, собственно @Lookup анотация (по сути тоже самое без явного конфига) и паттерн Provider (через ObjectFactoryCreatingFactoryBean или ProviderCreatingFactoryBean). Последний вариант мне нравится больше всего, т.к. в нем меньше всего магии.

когда видишь вариант с Lookup год спустя
@Component
public class MyServices {
 
    @Lookup
    public MyObject createObject() {
        return null;
    }
}

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

К счастью случай действительно довольно редкий.
28 сен 19, 15:49    [21981674]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 2 [3]      все
Все форумы / Java Ответить