各メソッドを実行する前に、サービス クラスのユーザー権限を確認したいと考えています。これが私の現在のアプローチです:
appContext.xml:
<bean id="requestSeviceImpl" class="services.impl.RequestSeviceImpl">
<property name="permissionService" ref="permissionServiceImpl" />
...
</bean>
実装:
public class RequestServiceImpl implements RequestService
{
private PermissionService permissionService;
...
public void setPermissionService(PermissionService permissionService)
{
this.permissionService = permissionService;
}
@Override
@Transactional
public RequestResultModel submitRequest(Request request)
{
if(permissionService.isCurrentUserAuthorized(request,"submit"))
{
//submit request
}
//throw a permission exception
}
@Override
@Transactional
public void sendRequest(Request request)
{
if(permissionService.isCurrentUserAuthorized(request,"send"))
{
//send request
}
//throw a permission exception
}
...
}
私が望むのは、カスタム アノテーション (@Secure) で権限チェックを処理することだけです。これは、permissionService でパーミッションをチェックし、必要に応じてパーミッション例外をスローする必要があります。そして、requestServiceImpl または permissionServiceImpl クラスを再インスタンス化したくありません (Spring Bean を使用する必要があります)。
@Override
@Transactional
@Secure(...)
public RequestResultModel submitRequest(Request request)
{
//submit request
}
これどうやってするの?