Ich habe eine Basis abstrakte Controller-Klasse, die eine generische Funktionalität enthält. Ich habe auch eine Reihe von Unterklassen. Die abstrakte Klasse hat eine Eigenschaft, die ich Dependency injizieren möchte. Diese Eigenschaft ist allen Unterklassen gemeinsam, daher möchte ich nicht, dass sie auf alle Unterklassen gesetzt wird. Aber wenn ich die Funktion des abstrakten Controllers in der Unterklasse anrufe, stellt sich heraus, dass die Eigenschaft im abstrakten Controller null ist. Ich will wissen, warum und wie sie zu beheben it.Below ist der Code-Schnipsel:
Abstract Controller
:Dependancy Injection in abstrakten Controller fehlgeschlagen
@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
}
}
außerdem, wenn ich abstrakte Controller entfernen (wie unten Beispiel), es funktioniert gut.
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
}
}
Ihr Code, auch wenn einige Syntaxfehler gibt, funktioniert, wie es die Injektion des Dienstes in Bezug auf. Es gibt mir kein Problem. Zeigen Sie den Code Ihrem Dienst, weil das vielleicht das Problem ist. – dambros
Tatsächlich erhalte ich per SOA permissionService, genau wie 'permissionService = ClientUtils.getClient (IPermissionService.class);' im abstrakten Controller. Der permissionService ist gut, denn wenn ich permissionService in subController direkt bekomme, funktioniert es gut. –
Wirklich schwer zu sagen, da es hier gut funktioniert. Wie nennt man 'XXX()'? – dambros