Свойство @Autowired в компоненте, сконструированное как параметр метода MVC

#java #spring #spring-mvc

#java #spring #spring-mvc

Вопрос:

Я использую Spring MVC framework. В приведенном ниже фрагменте кода возможно ли, чтобы Spring вводил компонент в MyRequestClass параметр запроса при его создании (т. Е. используя @Autowired или ApplicationContextAware интерфейс)? Мне нужен этот объект запроса для доступа к одному из моих одноэлементных компонентов Spring, и я предпочел бы не создавать ApplicationContextAware реализующий singleton только для этой цели.

Пока я просто получаю NullPointerExceptions, пытаясь получить доступ к свойству beanaroo с любым подходом.

 @RequestMapping("/**")
@Controller
public class MyController {

    @RequestMapping(value = "/mymethod", method = RequestMethod.POST)
    public ModelAndView myMethod(@RequestBody MyRequestClass request, 
                                   ModelMap modelMap,
                                   HttpServletResponse response) {
        ...
    }
}
  

например.

 public class MyRequestClass {

    @Autowired
    private MyInjectedBean beanaroo;

}
  

Я также попытался определить прототип компонента этого класса в файле контекста моего приложения, но это также не дало никакого эффекта.

Ответ №1:

Вы можете, используя @Configurable и AspectJ, но я бы на вашем месте не стал.

Я бы просто хотел, чтобы у компонента был метод, который принимает MyInjectedBean в качестве параметра, и вызывал его из контроллера.

Комментарии:

1. Хорошая мысль … Это достаточно простое решение. Не знаю, почему это сразу не пришло мне в голову! Спасибо, Божо