Рассмотрим интерфейс Action и два реализующих его класса: StupidAction и SmartAction.
SmartAction необходимо использовать другую службу, но поскольку действие создается во время выполнения, аннотация @Autowired не работает (служба имеет значение null).
Неправильно ли использовать шаблон «Стратегия» с Spring? Есть ли хорошее решение этой проблемы?
Я мог бы также установить «StupidAction» как службу, а не создавать ее экземпляр. Я мог бы также передать автоматически подключенные службы «doSomething» в параметрах метода. Но оба решения действительно грязные.
Некоторые примеры кода:
public interface Action {
void doSomething();
}
public class StupidAction implements Action{
@Autowired
private MyService myService; // THIS IS NULL. because StupidAction is instanciated at runtime.
public void doSomething(){
myService.changeSomething()
}
}
//Pseudo code
@RestController
@RequestMapping(path = "/")
public class WorkflowController {
@GetMapping("")
ResponseEntity someAPI() {
Action action = new SmartAction(); //create on runtime
action.doSomething(); //NullPointerExc
}
}
Подробнее здесь: https://stackoverflow.com/questions/618 ... y-strategy
Как использовать службу @Autowired в объекте, созданном с использованием шаблона фабрики/стратегии (созданного во время ⇐ JAVA
Программисты JAVA общаются здесь
1728368372
Anonymous
Рассмотрим интерфейс Action и два реализующих его класса: StupidAction и SmartAction.
SmartAction необходимо использовать другую службу, но поскольку действие создается во время выполнения, аннотация @Autowired не работает (служба имеет значение null).
Неправильно ли использовать шаблон «Стратегия» с [b]Spring[/b]? Есть ли хорошее решение этой проблемы?
Я мог бы также установить «StupidAction» как службу, а не создавать ее экземпляр. Я мог бы также передать автоматически подключенные службы «doSomething» в параметрах метода. Но оба решения действительно грязные.
Некоторые примеры кода:
public interface Action {
void doSomething();
}
public class StupidAction implements Action{
@Autowired
private MyService myService; // THIS IS NULL. because StupidAction is instanciated at runtime.
public void doSomething(){
myService.changeSomething()
}
}
//Pseudo code
@RestController
@RequestMapping(path = "/")
public class WorkflowController {
@GetMapping("")
ResponseEntity someAPI() {
Action action = new SmartAction(); //create on runtime
action.doSomething(); //NullPointerExc
}
}
Подробнее здесь: [url]https://stackoverflow.com/questions/61890975/how-to-use-autowired-service-in-an-object-created-with-the-factory-strategy[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия