簡體   English   中英

使用注入的Spring bean和自定義注釋在方法開始時做一些事情

[英]Do something in beginning of methods with injected spring beans and custom annotation

我想在執行每個方法之前檢查服務類中的用戶權限。 這是我目前的方法:

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
}

我怎樣才能做到這一點?

我能想到的唯一方法是通過面向方面的編程(AOP) 您可以使用Spring AOP或AspectJ。 您可能需要看《 AspectJ in Action 》一書。 第一章僅作為示例,將說明您可以使用AspectJ做什么。 隨后的章節將使用示例代碼,這些代碼完全可以實現您想要做的事情,並保護方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM