私は汎用的な機能を含む基本抽象コントローラクラスを持っています。私はサブクラスも持っています。 抽象クラスには、依存関係を挿入したいプロパティがあります。このプロパティはすべてのサブクラスに共通しているため、すべてのサブクラスで設定する必要はありません。しかし、サブクラスで抽象コントローラの関数を呼び出すと、abstractコントローラのプロパティであることがわかります。
Abstract Controller
:私はなぜ、どのようit.Belowを修正するためのコードスニペットであるかを知りたい抽象的なコントローラのDependcyインジェクションが失敗しました
@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
実際、抽象コントローラ内の 'permissionService = ClientUtils.getClient(IPermissionService.class);のように、SOAによってpermissionServiceが取得されます。 permissionServiceは良いです。なぜなら、私が直接subControllerのpermissionServiceを取得すると、それはうまく動作するからです。 –
ここでうまくいくので、本当に難しいです。 'XXX()'はどうやって呼びますか? – dambros