wicket-auth-roles と guice
wicket-auth-rolesでAuthenticatedWebSession#authenticateの中でDBにアクセスしてユーザの認証したい時の話。
ここでDIを連携している場合、SessionのサブクラスだとアノテーションとかつけておいてもServiceやDaoをインジェクションしてくれない。Springとの連携だとオンストラクタ内でInjectorHolder.getInjector().inject(this)を呼び出せばよいみたい。
http://d.hatena.ne.jp/hayassh/20090415/1239797052
ただGuiceだと、この方法ではダメみたい。次みたいにしたらうまくうごいた。
public class LoginSession extends AuthenticatedWebSession { @Inject private Service service; public LoginSession(Request request) { super(request); Application application = AuthenticatedWebApplication.get(); Injector injector = ((GuiceInjectorHolder) application.getMetaData(GuiceInjectorHolder.INJECTOR_KEY)).getInjector(); injector.injectMembers(this); } ... }