У меня есть базовый абстрактный класс контроллера, который содержит общую функциональность. У меня также есть набор подклассов. Абстрактный класс обладает свойством, которое я хотел бы использовать для инъекции зависимостей. Это свойство является общим для всех подклассов, поэтому я не хочу, чтобы он был установлен во всех подклассах. но когда я называю функцию абстрактного контроллера в подклассе, он оказывается свойством в абстрактном контроллере равным нулю. Я хочу знать, почему и как исправить it.Below фрагмент кода:
Abstract Controller
:Ошибка преобразования в абстрактном контроллере
@Controller
public abstract class WebAPIBaseController {
@Resource
private IPermissionService permissionService;
public void validPermission(int user,String code){
permissionService.valid(user,code);
}
}
SubController
@Controller
@RequestMapping("/order")
public class OrderController extends WebAPIBaseController {
public String XXX(){
validPermission(1,"code");//it will throw a NullPointerException
}
}
кроме того, если я удалю абстрактного контроллера (как показано ниже, например), его работает хорошо.
Remove abstract controller
@Controller
@RequestMapping("/order")
public class OrderController{
@Resource
private IPermissionService permissionService;
public void validPermission(int user,String code){
permissionService.valid(user,code);
}
public String XXX(){
validPermission(1,"code");//it works good
}
}
Ваш код, несмотря на то, что есть некоторые ошибки синтаксиса, работает он относительно инъекции службы. Это не дает мне никаких проблем. Покажите код своей службе, потому что, возможно, это проблема. – dambros
Фактически, я получаю разрешение службы SOA, так же, как 'permissionService = ClientUtils.getClient (IPermissionService.class);' в абстрактном контроллере. Служба разрешений - это хорошо, потому что, если я получаю разрешение на обслуживание непосредственно в subController, он работает хорошо. –
Действительно трудно сказать, так как он отлично работает здесь. Как вы называете 'XXX()'? – dambros