@ ভ্যালু: ডলার বনাম হ্যাশ ($ বনাম #) সহ স্প্রিং এক্সপ্রেশন ল্যাঙ্গুয়েজ (স্পেল)


126

${...}তুলনায় কখন ব্যবহার করতে হবে সে সম্পর্কে আমি কিছুটা বিভ্রান্ত #{...}। স্প্রিংয়ের ডকুমেন্টেশনগুলি কেবল ব্যবহার করে #{...}, তবে প্রচুর উদাহরণ রয়েছে যা ব্যবহার করে ${...}। তদ্ব্যতীত, আমি যখন স্পেল দিয়ে শুরু করি তখন আমাকে ব্যবহার করতে বলা হয়েছিল ${...}এবং এটি দুর্দান্ত কাজ করে।

যারা বিভ্রান্ত তাদের কাছে আমি এটি কীভাবে ব্যবহার করি তার একটি উদাহরণ

@Component
public class ProxyConfiguration {

    @Value("${proxy.host}")
    private String host;
    @Value("${proxy.port}")
    private String port;

    :
}

এবং কিছু সম্পত্তি ফাইল:

proxy.host=myproxy.host
proxy.port=8000

আমার প্রশ্নগুলি হ'ল:

  • পার্থক্য কি বা এটি একই?
  • একটি সংস্করণ হ্রাস করা হয়েছে তাই আমি অন্য একটি ব্যবহার করা উচিত?

উত্তর:


139

${...}সম্পত্তি স্থানধারক সিনট্যাক্স। এটি কেবল বৈশিষ্ট্যগুলি অবলম্বনে ব্যবহৃত হতে পারে।

#{...}হয় ফটো সিনট্যাক্স , যা অনেক বেশি সক্ষম এবং জটিল। এটি সম্পত্তি স্থানধারক এবং আরও অনেক কিছু পরিচালনা করতে পারে।

উভয়ই বৈধ, এবং উভয়ই হ্রাস করা হয় না।


22
ফটো সিনট্যাক্স ব্যবহার সফলভাবে এক্সেস সম্পত্তি মান জন্য, বিন্যাস ব্যবহার"#{'${property}'}"
Brice Roncace

1
পুনরায়: উপরে মন্তব্য করুন - এছাড়াও এই উত্তরটি দেখুন
স্টিভ চেম্বারস

8

${expr} -> তাত্ক্ষণিক মূল্যায়ন

#{expr} -> স্থগিত মূল্যায়ন

তাত্ক্ষণিক মূল্যায়নের অর্থ হ'ল অভিব্যক্তিটি মূল্যায়ন করা হয় এবং পৃষ্ঠাটি প্রথম রেন্ডার করার সাথে সাথে ফলাফলটি ফিরে আসে। স্থগিত মূল্যায়নের অর্থ হ'ল অভিব্যক্তি ভাষা ব্যবহার করা প্রযুক্তিটি পৃষ্ঠাটির জীবনকালীন সময়কালে এই অভিব্যক্তিটি মূল্যায়নের জন্য তার নিজস্ব যন্ত্রপাতি ব্যবহার করতে পারে, যখনই এটি করা উপযুক্ত হবে is

এখানে সম্পূর্ণ রেফারেন্স

কোনও জেএসপি ইএল নেই, জেএসপি স্পেল ব্যবহার করে। স্পেল এটি ব্যবহার করে এমন প্রযুক্তির সাথে ফিট করে।


6
আপনি একটি জাভা ইই ওয়েব প্রযুক্তির কথা বলছেন যখন প্রশ্নটি স্প্রিং ইএলগুলি ব্যবহার করে স্প্রিং কনফিগারেশনের বিষয়ে। এবং তারপরে, জেএসপি স্পেল ব্যবহার করে না, জেএসপি চালানোর জন্য আপনার এমনকি বসন্তের দরকার নেই
গ্রেগফ্যাক্ট

3
স্পেল ব্যবহার করে জেএসপিতে শেষ বিবৃতি নিখুঁতভাবে ভুল।
মিশাল এম

2
আরও স্পষ্ট করতে: সংস্করণ ২.১ হিসাবে জেএসপি। ইউনিফাইড ইএল ডক্সকে সমর্থন করে o অরাকল.com/ জাভা / 5/১ / টিউটোরিয়াল / ডোক / বেনকু.এইচটিএমএল যা স্পেলের জন্য একটি টেম্পলেট হিসাবে পরিবেশন করেছে। স্প্রিং ডকুমেন্ট থেকে: "স্প্রিং এক্সপ্রেশন ল্যাঙ্গুয়েজ (সংক্ষেপে স্পিল) হ'ল একটি শক্তিশালী এক্সপ্রেশন ভাষা যা রানটাইমের সময় কোনও অবজেক্ট গ্রাফ অনুসন্ধান করা এবং পরিচালনা করতে সহায়তা করে। ভাষার বাক্য গঠনটি ইউনিকাইড EL এর অনুরূপ তবে অতিরিক্ত বৈশিষ্ট্যগুলি সরবরাহ করে, সর্বাধিক উল্লেখযোগ্য পদ্ধতি পদ্ধতি এবং অনুরোধ স্ট্রিং টেম্প্লেটিং কার্যকারিতা। "
ফ্রেটজ ডুচার্ড

-1

প্রস্তাবিত এই নিবন্ধটি পড়ার চেষ্টা করুন

"যদি হ্যাশ ব্যবহার করা হয়, আপনার কোডটি প্রতিবার সংশোধিত হবে যখন উপাদানটি আংশিক রিফ্রেশে অন্তর্ভুক্ত করা হবে (যেমন প্রতিবার এটি রেন্ডার করা হয়) you আপনি যদি ডলার ব্যবহার করেন তবে আপনার কোডটি কেবলমাত্র পৃষ্ঠাটি লোড করার সময় গণনা করা হবে But তবে এটি এসএসজেএসেও কেবলমাত্র এলএল ছাড়িয়ে প্রসারিত করা হয়েছে। হ্যাশ বা ডলারের পরে কোঁকড়ানো ধনুর্বন্ধনী আপনার ভাষার শুরু এবং শেষ বোঝায় later পরে যখন আমরা ভাষার সংমিশ্রণে আসি তখন এটি গুরুত্বপূর্ণ হবে "


13
স্প্রিং ইএলটির সাথে কারও কোনও যোগসূত্র নেই, এটি জেএসপি ইএল নিয়ে কথা বলছে।
স্কাফম্যান

@ স্কাফম্যান: যদিও আপনি ঠিক বলেছেন, অবশ্যই এটি একটি আকর্ষণীয় তথ্য (কমপক্ষে আমার জন্য ...)।
sjngm

আর একটি উত্তর বলে যে "জেএসপি ইএল নেই, জেএসপি স্পেল ব্যবহার করে"। এটা কি ঠিক?
কার্ল জি

1
জাভা ইই স্পেসে একটি "এক্সপ্রেশন ল্যাঙ্গুয়েজ" (ইএল) রয়েছে যা জেএসপিগুলিতে এবং জেএসএফ দ্বারা ব্যবহৃত হতে বোঝানো হয়েছে। স্প্রিং ইএলের সাথে এর কোনও যোগসূত্র নেই।
গ্রেগফ্যাক্ট

-4

এক্সপ্রেশন ভাষা নির্দিষ্টকরণ • চূড়ান্ত প্রকাশ - মে 8, 2006,

পৃষ্ঠা ২:

Ev {expr} বা # {expr the কনস্ট্রাক্টস ব্যবহার করে একটি usingওয়াল-এক্সপ্রেশন গঠিত হয়} EL দ্বারা ঠিক একই পদ্ধতিতে উভয় কনস্ট্রাক্টসকে পার্স করা হয়েছে এবং মূল্যায়ন করা হয়, যদিও তারা EL ব্যবহার করছে এমন প্রযুক্তির বিভিন্ন অর্থ বহন করতে পারে।


2
আমার প্রশ্নের কোন অংশটির উত্তর দেওয়ার কথা? এটি ২০০ from সালের এবং "একইভাবে পার্সড এবং মূল্যায়ন একই ধরণের" এবং "বিভিন্ন অর্থ বহন করতে পারে" এর মতো শব্দ সম্ভবত এটি অস্পষ্ট বলেই সম্ভবত আপনি রাখতে পারেন।
sjngm
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.