+1 امتیاز
قبل در برنامه نویسی توسط (130 امتیاز)
ویرایش شده قبل توسط
چه جوری میتونم در ابتدای اجرای هر متد در یک برنامه جاوا کاری (مانند بررسی دسترسی کاربر به اجرای متد) را انجام دهیم؟

2 پاسخ

+3 امتیاز
قبل توسط (1.4هزار امتیاز)
انتخاب شده قبل توسط
 
بهترین پاسخ

کار ساده ای نیست. تنها راهی که میشه متصور شد استفاده از برنامه نویسی Aspect Oriented (مخفف: AOP) . که از AspectJ یا Spring AOP می شه استفاده کرد. به عنوان منبع هم مستندات spring aop و یا کتاب AspectJ in Action توصیه می شه.

در حالت عادی اگر بخواهیم عملیاتی در ابتدای هر متد انجام بدیم، کد رو داخل بدنه تابع باید بزنیم:

    public void sendReceipt(ReceiptInfo receipt)
    {
        if(permissionUtils.isCurrentUserAuthorized(receipt,"send"))
        {
            //send receipt
        }
        //throw a permission exception
    }

با استفاده از AOP میشه یک annotation برای انجام اون کار تعریف کرد و دیگر در داخل بدنه تابع کدی زده نمی شه (قبل از اجرای متد، سطح دسترسی فرد در کدِ منتسب به Secure@ چک شده و در صورت عدم اجازه دسترسی، exceptionای پرتاب می شود و از اجرای متد جلوگیری می شود)

@Secure(...)
public void sendReceipt(ReceiptInfo receipt)
{
    //send receipt
}

 

+1 امتیاز
قبل توسط (1.1هزار امتیاز)

Google Guice کتابخانه ای است که قابلیت پشتیبانی از dependency injection با استفاده از annotations در برنامه های جاوا است ایجاد می کند، از نظر قدرت به قدرتمندی Spring AOP و Aspect J نیست ولی بسیار سبک است و به سرعت برای برنامه های دسکتاپ جاوا setup می شود.

Google Guice قابلیتی به نام method interceptor دارد که کاملا نیاز شما را برطرف می کند.

سوالات مشابه

+1 امتیاز
1 پاسخ 526 بازدید
+1 امتیاز
1 پاسخ 1.2هزار بازدید
0 امتیاز
1 پاسخ 409 بازدید
0 امتیاز
0 پاسخ 463 بازدید
+2 امتیاز
1 پاسخ 967 بازدید
+1 امتیاز
1 پاسخ 618 بازدید
سوال شده 5 سال قبل در برنامه نویسی توسط Reza.R (851 امتیاز)
0 امتیاز
1 پاسخ 350 بازدید
سوال شده 5 سال قبل در برنامه نویسی توسط Reza.R (851 امتیاز)
...