Я пишу приложение Spring и изучаю Spring на ходу. До сих пор всякий раз, когда я хотел что-то дать ссылку на ApplicationContext
, это означало, что я пытался сделать что-то не так, поэтому я думал, что я спрошу, прежде чем я это сделал.
Мне нужно создать экземпляр прототипа для каждого запроса:
@Component
@Scope("prototype")
class ComplexThing {
@Autowired SomeDependency a
@Autowired SomeOtherDependency b
public ComplexThing() { }
// ... complex behaviour ...
}
Итак, я попробовал это:
@Controller
@RequestMapping ("/")
class MyController {
@GetMapping
public String index (ComplexThing complexThing, Model model) {
model.addAttribute("thing", complexThing);
return "index"
}
}
И я ожидал, что Spring добавит новый ComplexThing
для запроса, простокак это введено Model
. Но потом я обнаружил, что правильная интерпретация этого заключается в том, что вызывающая сторона отправит ComplexThing в запросе.
Я думал, что будет способ внедрить Beans в обработчики запросов, но Я нездесь его не видно .
Так что в этом случае я должен сделать мой контроллер ApplicationContextAware
и getBean
?