ঠিক জাভাবিয়ান কী?


1793

আমি বুঝতে পেরেছি, আমি মনে করি, একটি "বিন" সম্পত্তি এবং গেটার / সেটটারযুক্ত জাভা ক্লাস। যতটুকু আমি বুঝতে পারি এটি একটি সি স্ট্রাক্টের সমতুল্য। এটা কি সত্যি?

এছাড়াও, শিম এবং নিয়মিত শ্রেণীর মধ্যে কি সত্যিকারের সিনট্যাকটিক পার্থক্য রয়েছে? কোন বিশেষ সংজ্ঞা বা একটি ইন্টারফেস আছে?

মূলত, কেন এটির জন্য একটি পদ আছে?

এছাড়াও Serializableইন্টারফেস মানে কি?


14
জাভা বিনগুলি যে জায়গাগুলি ব্যবহার করা হয়েছে সেগুলি দেখুন ? । এটি নির্দিষ্ট একটি সম্মেলনের পরে একটি শ্রেণি।
ম্যাথু ফ্ল্যাশেন

5
সম্পূর্ণতার খাতিরে, এখানে জাভাবিয়ান স্পেসিফিকেশনের লিঙ্ক ।
informatik01

2
শুধু একটি নোট. আপনি যদি কখনও শুনেন যে লোকেরা POJO শব্দটি ব্যবহার করে, তবে তাদের প্রায়শই আসলে বিনের অর্থ হয়। আপনি যখন পজোগুলি দেখেন তাদের প্রায়শই সেটার এবং গিটার থাকে, সিরিয়ালাইজযোগ্য হয় ... বাস্তবে কোনও পজোর জন্য সেটার এবং গেটার, সিরিয়ালাইজযোগ্য ইন্টারফেস বা অন্য যে কোনও কিছুর প্রয়োজন হয় না - এটি কেবল কোনও নির্দিষ্ট প্রয়োজনীয়তা ছাড়াই সরল পুরাতন জাভা অবজেক্ট।
বিল কে

উত্তর:


2011

একটি জাভাবিয়ান কেবল একটি মান

  1. সমস্ত সম্পত্তি ব্যক্তিগত ( গেটার / সেটার ব্যবহার করুন )
  2. জনসাধারণের নো-আর্গুমেন্ট নির্মাণকারী
  3. কার্যকর Serializable

এটাই. এটি কেবল একটি সম্মেলন। প্রচুর গ্রন্থাগার যদিও এটির উপর নির্ভর করে।

সম্মানের সাথে Serializable, এপিআই ডকুমেন্টেশন থেকে :

Java.io.Serializable ইন্টারফেস প্রয়োগ করে বর্গ দ্বারা শ্রেণীর ক্রমীয়করণযোগ্যতা সক্ষম করা হয়। যে শ্রেণিগুলি এই ইন্টারফেসটি বাস্তবায়ন করে না তাদের কোনও রাজ্য সিরিয়ালাইজড বা deserialized হবে না। সিরিয়ালাইজযোগ্য শ্রেণীর সমস্ত উপপ্রকারগুলি সেগুলি নিজেরাই সিরিয়ালযোগ্য। সিরিয়ালাইজেশন ইন্টারফেসের কোনও পদ্ধতি বা ক্ষেত্র নেই এবং কেবল সিরিয়ালাইজযোগ্য হওয়ার শব্দার্থক সনাক্তকরণের জন্য পরিবেশন করে।

অন্য কথায়, সিরিয়ালাইজযোগ্য অবজেক্টগুলি স্ট্রিমগুলিতে লিখিত হতে পারে, এবং সেইজন্য ফাইল, অবজেক্ট ডাটাবেস, সত্যই কিছু।

এছাড়াও, জাভাবিয়ান এবং অন্য শ্রেণীর মধ্যে কোনও সিনট্যাক্টিক পার্থক্য নেই - একটি শ্রেণি একটি জাভাবিয়ান হয় যদি এটি মান অনুসরণ করে।

এটির জন্য একটি পদ রয়েছে কারণ মানটি গ্রন্থাগারগুলিকে প্রোগ্রামিকভাবে আপনার পূর্বনির্ধারিত উপায়ে সংজ্ঞায়িত শ্রেণীর দৃষ্টান্তগুলির সাথে কাজ করার মঞ্জুরি দেয়। উদাহরণস্বরূপ, যদি কোনও লাইব্রেরি আপনার যে কোনও বস্তুটিতে প্রবেশ করে সেটিকে স্ট্রিম করতে চায়, তবে এটি এটি জানে কারণ আপনার অবজেক্টটি সিরিয়ালাইজযোগ্য (লিব আপনার ধরণের জিনিসগুলি যথাযথ জাভাবিয়ান হওয়া প্রয়োজন বলে ধরে নিচ্ছেন)।


197
ঠিক আছে, আমার মতে মটরশুটি ঘিরে প্রায় সমস্ত ডকুমেন্টেশন আপনার কাছে শব্দটিকে সংক্ষিপ্তভাবে বর্ণনা করতে পারে না। +1
AndaP

10
এটি কি শিমের সদস্যদেরও মটরশুটি করা দরকার? যুক্তিসঙ্গত প্রয়োজন বলে মনে হচ্ছে ..
ওয়ার্ল্ডসায়িশি

14
@ ওয়ার্ডসায়শি - না, এটির দরকার নেই। উদাহরণস্বরূপ একটি বিন একটি স্ট্রিং থাকতে পারে; এবং স্ট্রিং শিম নয়। (স্ট্রিং অপরিবর্তনীয়, সুতরাং আপনি খালি কনস্ট্রাক্টর এবং সেটারকে কল করে এটি তৈরি করতে পারবেন না)) এটি যুক্তিসঙ্গত বলে মনে হয় যে সিরিয়ালাইজেবল অবজেক্টের সিরিয়ালাইজেবল সদস্য থাকা উচিত, যদি না এটি কোনওভাবে বাইরে থেকে সিরিয়ালাইজ করে। সুতরাং না, জাভা শিমের সদস্যদের জাভা মটরশুটিগুলির কোনও দিক থাকার দরকার নেই। যদিও এটি মটরশুটি হয় তবে এটি আরও সহজ
উইলিয়াম বার

12
"সমস্ত সম্পত্তি ব্যক্তিগত" সঠিক নয়। গেটার এবং সেটটারদের থেকে সম্পত্তি নির্ধারণ করা হয় (যদি কোনও পদ্ধতি এক্স গেটফু থাকে) -> শিমের "ফু" নামে একটি পাঠযোগ্য সম্পত্তি রয়েছে; যদি কোনও পদ্ধতি সেটফু (এক্স ফু) থাকে -> শিমের একটি লিখনযোগ্য সম্পত্তি আছে "foo বিন্যাস")। বৈশিষ্ট্যগুলি সদস্য ক্ষেত্রগুলির দ্বারা ব্যাক করা যেতে পারে (তবে এটি হতে হবে না) যা সাধারণত ব্যক্তিগত হয়।
পুস

2
আমি জাভা বিন হিসাবে আশা করি "একটি শ্রেণি অবশ্যই পাবলিক হতে হবে"। এবং এটি কি সত্যই দরকার যে এটি সিরিয়ালাইজেবল ইন্টারফেস বাস্তবায়ন করা উচিত ??
সত্যব্রত সাহু

286

এটির শব্দটি বিশেষ করে তোলার জন্য এখানে একটি শব্দ রয়েছে। বাস্তবতা এত রহস্যজনক কাছাকাছি কোথাও নেই।

মূলত, একটি "বিন":

  • একটি সিরিয়ালাইজযোগ্য অবজেক্ট (এটি এটি প্রয়োগ java.io.Serializableকরে এবং সঠিকভাবে এটি করে), এটি
  • "সম্পত্তি" রয়েছে যার প্রাপ্তি এবং সেটটারদের নির্দিষ্ট নামগুলির সাথে কেবল পদ্ধতি (যেমন বলা যাক, getFoo()"ফু" সম্পত্তি অর্জনকারী) এবং এবং
  • এর সর্বজনীন 0-আরগ নির্মাণকারী রয়েছে (যাতে এটি ইচ্ছামত তৈরি করা যায় এবং এর বৈশিষ্ট্যগুলি সেট করে কনফিগার করা যেতে পারে)।

হালনাগাদ:

যেমন Serializable: এটি "চিহ্নিতকারী ইন্টারফেস" (একটি ইন্টারফেস যা কোনও ফাংশন ঘোষনা করে না) ছাড়া কিছুই নয় যা জাভাতে বলে যে বাস্তবায়নকারী শ্রেণি "সিরিয়ালাইজেশন" এর সাথে সম্মতি দেয় (এবং বোঝায় যে এটি "সিরিয়ালাইজেশন" - রূপান্তরকারী একটি প্রক্রিয়া বাইটস স্ট্রিম মধ্যে একটি উদাহরণ। এই বাইটগুলি ফাইলগুলিতে সংরক্ষণ করা যেতে পারে, একটি নেটওয়ার্ক সংযোগের মাধ্যমে প্রেরণ করা ইত্যাদি ইত্যাদি, এবং কোনও জেভিএম (কমপক্ষে, একটি যা বস্তুর ধরণের সম্পর্কে জানে) পরে অবজেক্টটি পুনর্গঠন করার অনুমতি দেওয়ার জন্য পর্যাপ্ত তথ্য থাকতে পারে - সম্ভবত এটির অন্য কোনও ক্ষেত্রে অ্যাপ্লিকেশন, বা এমনকি একটি সম্পূর্ণ অন্যান্য মেশিনে!

অবশ্যই, এটি করার জন্য, শ্রেণিকে নির্দিষ্ট সীমাবদ্ধতা মেনে চলতে হবে। তাদের মধ্যে প্রধানটি হ'ল সমস্ত উদাহরণ ক্ষেত্রগুলি অবশ্যই প্রিমিটিভ টাইপ (ইনট, বুল, ইত্যাদি), কিছু শ্রেণীর উদাহরণ যা সিরিয়ালিয়ালও হতে পারে, বা চিহ্নিত করা থাকে transientযাতে জাভা সেগুলি অন্তর্ভুক্ত করার চেষ্টা না করে। (অবশ্যই এটির অর্থ হ'ল transientক্ষেত্রগুলি কোনও প্রবাহের উপরে ভ্রমণে বেঁচে থাকবে না fields এমন একটি শ্রেণীর transientক্ষেত্রে ক্ষেত্র রয়েছে যা প্রয়োজনে সেগুলি পুনরায় পুনর্নির্মাণের জন্য প্রস্তুত করা উচিত)

একটা ক্লাস যে সীমাবদ্ধতার কারণে মেনে চলতে না পারেন, বাস্তবায়ন করা উচিত নয় Serializable(এবং, IIRC, জাভা কম্পাইলার এমনকি করা হবে না দিন এটা এত না।)


এটি সম্ভবত একটি বোকা প্রশ্ন তবে, কোনও আদিম ধরণ বা শ্রেণীর উদাহরণ ছাড়াও উদাহরণ ক্ষেত্রটি কী হতে পারে?
কিংফ্রিটো_5005

8
@ কিংফ্রিটো_5005: এটি এক বা অন্য হতে চলেছে। তবে এটি যদি কোনও শ্রেণীর উদাহরণ হয় তবে that শ্রেণিটি সিরিয়ালযোগ্য কিনা তা গুরুত্বপূর্ণ। কোনও শ্রেণি সিরিয়ালযোগ্য হওয়ার জন্য, এর অ transientঅংশগুলি কিছু সিরিয়ালযোগ্য টাইপের হতে হবে।
সিএইচও

সম্ভবত উল্লেখ করতে ভুলে গেছেন যে কনস্ট্রাক্টরের কোনও যুক্তি নেই। এর সর্বজনীন ডিফল্ট নির্মাতা রয়েছে (যাতে এটি ইচ্ছামতো তৈরি করা যায় এবং এর বৈশিষ্ট্যগুলি সেট করে কনফিগার করা যেতে পারে)।
আমোষ কোসগেই

@ আমসকোসেই: ভোলেন নি; এটা শুধু নিরর্থক হতে চাই। সংজ্ঞা অনুসারে একটি ডিফল্ট কনস্ট্রাক্টরকে কোনও যুক্তি ছাড়াই কল করা যেতে পারে।
সিএওও

@ আমোস: যদিও আমি এটি খতিয়ে দেখছি তবে মনে হচ্ছে এটি "ডিফল্ট কনস্ট্রাক্টর" এর অর্থ সি ++ থেকে জাভাতে কিছুটা আলাদা। : পি "0-আরগ" দিয়ে "ডিফল্ট" প্রতিস্থাপন করা হয়েছে।
সিএওও

94

জাভাবিয়ানস জাভা ক্লাস যা একটি অত্যন্ত সাধারণ কোডিং কনভেনশন মেনে চলে। আপনাকে যা করতে হবে তা হ'ল

  1. java.io.Serializableইন্টারফেস বাস্তবায়ন - একটি বস্তুর অবস্থা সংরক্ষণ করতে
  2. অবজেক্টটি ইনস্ট্যান্ট করতে - একটি সর্বজনীন ফাঁকা আর্গুমেন্ট কনস্ট্রাক্টর ব্যবহার করুন
  3. বেসরকারী ভেরিয়েবলের (বৈশিষ্ট্য) মানগুলি নির্ধারণ এবং সেট করতে পাবলিক গেটর / সেটার পদ্ধতি সরবরাহ করুন।

এ জাতীয় সহজ ব্যাখ্যা আমি যা খুঁজছিলাম is ধন্যবাদ!
মোডো

62

জাভাবীনের বৈশিষ্ট্য

একটি জাভাবিয়ান একটি জাভা অবজেক্ট যা নির্দিষ্ট প্রোগ্রামিং কনভেনশনগুলিকে সন্তুষ্ট করে:

  1. জাভাবিয়ান বর্গ অবশ্যই প্রয়োগ করতে হবে Serializableবা হয়Externalizable

  2. জাভাবিয়ান শ্রেণিতে অবশ্যই একটি নো-আরগ কনস্ট্রাক্টর থাকতে হবে

  3. সমস্ত জাভাবিয়ান বৈশিষ্ট্যে অবশ্যই পাবলিক সেটার এবং গেটর পদ্ধতি থাকতে হবে

  4. সমস্ত জাভাবিয়ান ইনস্ট্যান্স ভেরিয়েবলগুলি ব্যক্তিগত হওয়া উচিত

জাভাবীনের উদাহরণ

@Entity
public class Employee implements Serializable{

   @Id
   private int id;
   private String name;   
   private int salary;  

   public Employee() {}

   public Employee(String name, int salary) {
      this.name = name;
      this.salary = salary;
   }
   public int getId() {
      return id;
   }
   public void setId( int id ) {
      this.id = id;
   }
   public String getName() {
      return name;
   }
   public void setName( String name ) {
      this.name = name;
   }
   public int getSalary() {
      return salary;
   }
   public void setSalary( int salary ) {
      this.salary = salary;
   }
}

3
টীকাগুলি কি জাভা বিনের অংশ বা অংশ?
জিয়ানিস ক্রিসোফাকিস

7
@ Giannichristofakis না, টীকাগুলি প্রয়োজনীয় নয় not টীকাগুলি স্প্রিং ফ্রেমওয়ার্কের অংশ হিসাবে ব্যবহৃত হয়, যা জাভা বিনগুলি ব্যাপকভাবে ব্যবহার করে।
তিয়ানসিয়াং জিয়াং

1
এটিতে কোনও নো-আরগ কনস্ট্রাক্টর থাকা দরকার কেন?
রেনাটো

6
@ রেনাটো এটি খুব সহজ। বসন্ত সম্পর্কে চিন্তা করুন যা অবশ্যই আপনার শিমটি আরগ-কনস্ট্রাক্টরের সাথে স্বয়ংক্রিয়ভাবে ইনস্ট্যান্ট করবে ... এটি আর্গুমেন্ট হিসাবে কী পাস করবে? ;)
অ্যালেক্স 75

24

একটি উদাহরণ সহ ব্যাখ্যা।

1. java.io.Serializable আমদানি করুন

সিরিয়ালাইজেশন হিসাবে, ডকুমেন্টেশন দেখুন

2. ব্যক্তিগত ক্ষেত্র

বাইরের ক্লাসগুলি সহজেই সেই ক্ষেত্রগুলিকে সংশোধন করার জন্য ক্ষেত্রগুলি ব্যক্তিগত হওয়া উচিত। এই ক্ষেত্রগুলিতে সরাসরি অ্যাক্সেস না করার পরিবর্তে usuagly গিটার / সেটার পদ্ধতি ব্যবহার করা হয়।

3. নির্মাণকারী

কোনও যুক্তি ছাড়াই পাবলিক কনস্ট্রাক্টর।

৪. গেটর / সেটার

ব্যক্তিগত ক্ষেত্রে অ্যাক্সেস এবং সংশোধন করার জন্য গেটর এবং সেটার পদ্ধতি methods

/** 1. import java.io.Serializable */
public class User implements java.io.Serializable {
    /** 2. private fields */
    private int id;
    private String name;

    /** 3. Constructor */
    public User() {
    }
    public User(int id, String name) {
        this.id = id;
        this.name = name;
    }

    /** 4. getter/setter */
    // getter
    public int getId() {
        return id;
    }
    public String getName() {
        return name;
    }
    // setter
    public void setId(int id) {
        this.id = id;
    }
    public void setName(String name) {
        this.name = name;
    }
}

2
আমি অনুমান করি setId(int id)শরীরের জন্য আপনি তার this.id = id;পরিবর্তে বলতে চেয়েছিলেনthis.id = is;
স্টিভেন 7mwesigwa

18

জাভা বিনগুলি কম কোড এবং আরও কাজের পদ্ধতির জন্য ব্যবহার করা হচ্ছে ... জাভা বিনগুলি রানটাইম আবিষ্কার এবং অ্যাক্সেসের সার্বজনীন চুক্তি হিসাবে জাভা EE জুড়ে ব্যবহৃত হয়। উদাহরণস্বরূপ, জাভা সার্ভার পৃষ্ঠাগুলি (জেএসপি) জাভা বিনগুলি পৃষ্ঠাগুলির মধ্যে বা সার্লেলেট এবং জেএসপিগুলির মধ্যে ডেটা ট্রান্সফার অবজেক্ট হিসাবে ব্যবহার করে। জাভা EE এর জাভা বিয়ানস অ্যাক্টিভেশন ফ্রেমওয়ার্ক জাভা ইই-তে MIME ডেটা ধরণের জন্য সমর্থন একীকরণের জন্য জাভা বিন ব্যবহার করে। জাভা ইই ম্যানেজমেন্ট এপিআই একটি জাভা ইই পরিবেশে পরিচালিত সংস্থানসমূহের উপকরণের ভিত্তি হিসাবে জাভাবিয়ান ব্যবহার করে।

সিরিয়ালাইজেশন সম্পর্কে:

অবজেক্ট সিরিয়ালাইজেশনে কোনও বস্তুকে বাইটের ক্রম হিসাবে উপস্থাপন করা যেতে পারে যা অবজেক্টের ডেটা পাশাপাশি অবজেক্টের ধরণ এবং অবজেক্টে সংরক্ষিত ডেটার ধরণের তথ্য অন্তর্ভুক্ত করে।

সিরিয়ালযুক্ত কোনও বস্তু কোনও ফাইলে লেখার পরে, এটি ফাইল থেকে পড়তে পারে এবং এটি ডিসরিওলাইজ করা যায়, যা সেই ধরণের তথ্য এবং বাইটগুলি যা বস্তুর প্রতিনিধিত্ব করে এবং এর ডেটা ব্যবহার করে স্মৃতিতে বস্তুটিকে পুনরায় তৈরি করতে পারে।


17

একাধিক সার্ভার জুড়ে আপনার প্রকল্প স্থাপন করার সময় আপনি সিরিয়ালাইজেশন দরকারী পাবেন যেহেতু মটরশুটি বজায় থাকবে এবং সেগুলি জুড়ে স্থানান্তরিত হবে।


1
আপনি দয়া করে একাধিক সার্ভার জুড়ে প্রকল্প স্থাপনের বিষয়ে আরও তথ্য সরবরাহ করতে পারেন? আপনাকে ধন্যবাদ
হানফেং

4
সার্ভার একটি দম্পতি, Websphere জন্য এই লিঙ্ক সহ একটি ক্লাস্টার বলে stackoverflow.com/questions/3193345/... যথাসাধ্য সাহায্যের।
ট্রুং হা

10

জাভা বিনস একটি মান, এবং এর প্রাথমিক বাক্য গঠন প্রয়োজনীয়তাগুলি অন্য উত্তর দ্বারা পরিষ্কারভাবে ব্যাখ্যা করা হয়েছে।

তবে আইএমও, এটি একটি সাধারণ সিনট্যাক্স স্ট্যান্ডার্ডের চেয়ে বেশি। জাভা বিনের আসল অর্থ বা উদ্দেশ্যে ব্যবহার হ'ল কোডের পুনরায় ব্যবহার এবং উপাদান-ভিত্তিক সফ্টওয়্যার ইঞ্জিনিয়ারিংয়ের সুবিধার্থে স্ট্যান্ডার্ডের চারপাশে বিভিন্ন সরঞ্জামকে সমর্থন করে, অর্থাৎ বিকাশকারীদের বিদ্যমান উপাদানগুলি (শ্রেণি) একত্রিত করে এবং কোনও লিখিত না লিখে অ্যাপ্লিকেশন তৈরি করতে সক্ষম করুন কোড (বা কেবল একটি সামান্য আঠালো কোড লিখতে হবে)। দুর্ভাগ্যক্রমে এই প্রযুক্তিটি শিল্পের দ্বারা অনুমিত এবং স্বল্প-ব্যবহারযোগ্য, যা এই থ্রেডের উত্তরগুলি থেকে বলা যেতে পারে।

আপনি যদি জাভা বিনগুলিতে ওরাকলের টিউটোরিয়ালটি পড়েন তবে আপনি এটিতে আরও ভাল ধারণা পেতে পারেন।


দরকারী পোস্ট এবং লিঙ্ক। আমি যখন মটরশুটি সম্পর্কে চিন্তা করি তখন আমি ওসাকল নিবন্ধে চিত্রিত হিসাবে "ভিজ্যুয়াল বিল্ডার" টাইপ স্টাফের জিনিসটি সত্যিই ভাবি না। আমি ভাবছি যে আরও অনেকগুলি ফ্রেমওয়ার্ক রয়েছে যা সেগুলি একটি বড় উপায়ে ব্যবহার করে ...
মাইকে রডেন্ট

9

উইকিপিডিয়া অনুসারে:

  1. শ্রেণিতে অবশ্যই সর্বজনীন ডিফল্ট নির্মাতা থাকতে হবে (কোনও যুক্তি ছাড়াই)। এটি সম্পাদনা এবং অ্যাক্টিভেশন ফ্রেমওয়ার্কগুলির মধ্যে সহজে ইনস্ট্যান্টেশন করতে দেয়।

  2. মানক নামকরণ কনভেনশন অনুসারে শ্রেণিবদ্ধ বৈশিষ্ট্যগুলি গেট, সেট, (গেটের পরিবর্তে বুলিয়ান সম্পত্তিগুলির জন্য ব্যবহার করা যেতে পারে) এবং অন্যান্য পদ্ধতি (তথাকথিত অ্যাকসেসর পদ্ধতি এবং মিউটর পদ্ধতি) ব্যবহার করে অ্যাক্সেসযোগ্য হতে হবে। এটি ফ্রেমওয়ার্কের মধ্যে শিমের রাজ্যের সহজ স্বয়ংক্রিয় পরিদর্শন এবং আপডেট করার অনুমতি দেয়, যার মধ্যে অনেকগুলি বিভিন্ন ধরণের বৈশিষ্ট্যের জন্য কাস্টম সম্পাদক রয়েছে। সেটারগুলির এক বা একাধিক যুক্তি থাকতে পারে।

  3. ক্লাসটি সিরিয়ালযোগ্য হওয়া উচিত। [এটি অ্যাপ্লিকেশন এবং ফ্রেমওয়ার্কগুলিকে ভিএম এবং প্ল্যাটফর্মের থেকে আলাদাভাবে বিনের রাজ্যের নির্ভরযোগ্যভাবে সংরক্ষণ, সঞ্চয় এবং পুনঃস্থাপনের অনুমতি দেয়]]

আরও তথ্যের জন্য এই লিঙ্কটি অনুসরণ করুন।


7

আপনার প্রশ্নের দ্বিতীয় ভাগ সম্পর্কে, সিরিয়ালাইজেশন হ'ল স্বাক্ষরিত বাইটের ক্রম হিসাবে বস্তুগুলি সংরক্ষণ করার জন্য ব্যবহৃত একটি অধ্যবসায় প্রক্রিয়া। আনুষ্ঠানিকভাবে কম রাখুন, এটি কোনও অবজেক্টের অবস্থা সঞ্চয় করে যাতে আপনি পরে ডি-সিরিয়ালাইজেশন করে এটি পুনরুদ্ধার করতে পারেন।


7

একটি জাভা বিন একটি জাভা শ্রেণি [ধারণাগত] যা নিম্নলিখিত সম্মেলনগুলি অনুসরণ করা উচিত:

  1. এটিতে একটি নো-আরগ কনস্ট্রাক্টর থাকা উচিত।
  2. এটি সিরিয়ালাইজযোগ্য হওয়া উচিত।
  3. এটি গেটর এবং সেটার পদ্ধতি হিসাবে পরিচিত বৈশিষ্ট্যের মান নির্ধারণ এবং পাওয়ার জন্য পদ্ধতি সরবরাহ করা উচিত।

এটি একটি পুনরায় ব্যবহারযোগ্য সফ্টওয়্যার উপাদান। এটি অনেকগুলি অবজেক্টকে একটি বস্তুতে আবদ্ধ করতে পারে যাতে একই বস্তুটি বহুগুণে স্থান থেকে অ্যাক্সেস করা যায় এবং কোডের সহজ রক্ষণাবেক্ষণের দিকে পদক্ষেপ।


1
জাভা মটরশুটি সম্পর্কে কথা বলার সময় আমি "পুনরায় ব্যবহারযোগ্য সফ্টওয়্যার উপাদান" শব্দটি পছন্দ করি - কারণ সাধারণত জাভা বিনগুলি একেবারে কিছুই করে না।
রডনি পি। বারবাতি

6

তারা সিরিয়ালাইজযোগ্য, শূন্য-আর্গুমেন্ট নির্মাণকারী রয়েছে এবং গেটর এবং সেটার পদ্ধতি ব্যবহার করে বৈশিষ্ট্যে অ্যাক্সেসের অনুমতি দেয়। "বিন" নামটি এই স্ট্যান্ডার্ডটি অন্তর্ভুক্ত করার জন্য দেওয়া হয়েছিল, যার উদ্দেশ্য জাভার জন্য পুনরায় ব্যবহারযোগ্য সফ্টওয়্যার উপাদান তৈরি করা। according to উইকি

আপনার অ্যাপ্লিকেশনটির মেরুদণ্ড গঠনকারী এবং স্প্রিং আইওসি ধারক দ্বারা পরিচালিত অবজেক্টগুলিকে মটরশুটি বলা হয়। শিম এমন একটি বস্তু যা তাত্ক্ষণিকভাবে একত্রিত হয় এবং অন্যথায় একটি স্প্রিং আইওসি ধারক দ্বারা পরিচালিত হয়। অন্যথায়, একটি শিম আপনার আবেদনের অনেকগুলি অবজেক্টের মধ্যে একটি। according to বসন্ত io


4

শিম ধারণাটি সম্পর্কে কেবল সামান্য ব্যাকগ্রাউন্ড / আপডেট। অন্যান্য অনেক উত্তরের আসলে কী আছে তবে এতগুলি কেন তা নয়।

এগুলি জিওআই তৈরির অংশ হিসাবে প্রথম দিকে জাভাতে আবিষ্কার করা হয়েছিল। তারা এমন নিদর্শনগুলি অনুসরণ করেছিল যা সরঞ্জামগুলির পক্ষে আলাদা করে রাখা একটি বৈশিষ্ট্য প্যানেল তৈরি করতে দেয় যাতে আপনি বিনের বৈশিষ্ট্যগুলি সম্পাদনা করতে পারেন। সাধারণভাবে, বিনের বৈশিষ্ট্যগুলি স্ক্রিনের একটি নিয়ন্ত্রণের প্রতিনিধিত্ব করে (চিন্তায় x, y, প্রস্থ, উচ্চতা, পাঠ্য, ..)

আপনি এটিকে দৃ strongly়ভাবে টাইপ করা ডেটা কাঠামো হিসাবেও ভাবতে পারেন।

সময়ের সাথে সাথে এগুলি একই ধরণের অ্যাক্সেস ব্যবহার করে এমন প্রচুর সরঞ্জামের জন্য দরকারী হয়ে উঠেছে (উদাহরণস্বরূপ, ডাটাবেসে ডেটা কাঠামো ধরে রাখতে হাইবারনেট)

সরঞ্জামগুলি বিকশিত হওয়ার সাথে সাথে তারা টীকাগুলির দিকে আরও সরল এবং সেটার / গেটারের নামগুলি আলাদা করা থেকে দূরে। এখন বেশিরভাগ সিস্টেমে শিমের প্রয়োজন হয় না, তারা কীভাবে কীভাবে ব্যবহার করতে হয় তা জানানোর জন্য তারা টীকাযুক্ত বৈশিষ্ট্যযুক্ত কোনও সাধারণ পুরানো জাভা বস্তু নিতে পারে।

এখন আমি মটরশুটিগুলিকে টীকাযুক্ত সম্পত্তি বল হিসাবে দেখি - তারা যে টীকাটি বহন করে তার জন্য এগুলি সত্যই কার্যকর।

মটরশুটি নিজেই স্বাস্থ্যকর নিদর্শন নয়। তারা তাদের প্রকৃতির দ্বারা এনক্যাপসুলেশনটি ধ্বংস করে যেহেতু তারা তাদের সমস্ত সম্পত্তি বাহ্যিক হেরফেরের জন্য প্রকাশ করে এবং তারা ব্যবহার করা হয় সিমের অভ্যন্তরে কোড তৈরি করার পরিবর্তে শিমের বাহ্যিকভাবে হেরফের করার কোড তৈরি করার প্রবণতা রয়েছে ("ডন লঙ্ঘন" এর মানগুলির জন্য কোনও অবজেক্টকে জিজ্ঞাসা করবেন না, কোনও জিনিসকে আপনার জন্য কিছু করতে বলুন ")। ন্যূনতম গেটার এবং কোনও সেটটার সহ এনোটেটেড পোজো ব্যবহার করা ওও এনক্যাপসুলেশন পুনরুদ্ধার করা এবং অপরিবর্তনীয়তার সম্ভাবনা সহ অনেক বেশি।

যাইহোক, এই সমস্ত জিনিসগুলি ঘটতে থাকায় কেউ এন্টারপ্রাইজ জাভা বিনস নামে ধারণাটি প্রসারিত করেছিলেন। এগুলি ... আলাদা। এবং এগুলি এত জটিল যে অনেক লোক অনুভব করেছিল যে তারা পুরো বিন ধারণাটি বুঝতে পারে না এবং এই শব্দটি ব্যবহার বন্ধ করে দিয়েছে। এটি হ'ল, আমি মনে করি, আপনি সাধারণত শিমগুলি কেন পজেওস হিসাবে উল্লেখ করেন শুনেন (যেহেতু প্রতিটি জাভা বস্তু একটি পোজো হয় এটি প্রযুক্তিগতভাবে ঠিক আছে তবে আপনি যখন কেউ পজো বলতে শুনেন তখন তারা প্রায়শই এমন কিছু সম্পর্কে চিন্তা করছেন যা শিমের প্যাটার্ন অনুসরণ করে)


ডানদিকে - লঙ্ঘন করে "এর মানগুলির জন্য কোনও বস্তুর কাছে জিজ্ঞাসা করবেন না, কোনও জিনিসকে আপনার জন্য কিছু করতে বলুন")
ARK

3

একটি জাভা বিন হল যে কোনও জাভা শ্রেণি যা নিম্নলিখিত তিনটি মানদণ্ডকে সন্তুষ্ট করে:

  1. এটি সিরিয়ালাইজযোগ্য ইন্টারফেস (একটি মার্কার ইন্টারফেস) প্রয়োগ করতে হবে।
  2. কনস্ট্রাক্টরটি সর্বজনীন হতে হবে এবং তার কোনও যুক্তি থাকতে হবে না (অন্য লোকে যাকে "নো-আরগ কনস্ট্রাক্টর" বলে ডাকে)।
  3. এটিতে গিটার এবং সেটটার থাকা উচিত।

সিরিয়াল ভার্সনউইড ফিল্ডটি লক্ষ্য করা ভাল অবজেক্টের স্থিতি বজায় রাখার জন্য গুরুত্বপূর্ণ। নীচে কোডটি শিম হিসাবে যোগ্যতা অর্জন করে:

public class DataDog implements java.io.Serializable {

private static final long serialVersionUID = -3774654564564563L;

private int id;
private String nameOfDog;

//The constructor should NOT have arguments
public DataDog () {}


/** 4. getter/setter */

// getter(s)
public int getId() {
    return id;
}
public String getNameOfDog() {
    return nameOfDog;
}
// setter(s)
public void setId(int id) {
    this.id = id;
}
public void setNameOfDog(String nameOfDog) {
    this.nameOfDog = nameOfDog;
}}

2

জাভাবিয়ান বোঝার জন্য আপনাকে নিম্নলিখিতগুলি লক্ষ্য করতে হবে: জাভাবিয়ান একটি ধারণামূলক উপাদান এবং নির্দিষ্ট জিনিসের একটি শ্রেণির প্রতিনিধিত্ব করতে পারে না

জাভাবিয়ান একটি উন্নয়ন সরঞ্জাম পুনরায় ব্যবহারযোগ্য সফ্টওয়্যার উপাদানগুলির ক্রিয়াকলাপটি রূপান্তরিত করা যেতে পারে

জাভাবিয়ান সূর্যের জাভাবিয়ান স্পেসিফিকেশনের উপর ভিত্তি করে এবং পুনরায় ব্যবহারযোগ্য উপাদান হতে পারে। এর বৃহত্তম বৈশিষ্ট্য হ'ল পুনরায় ব্যবহারযোগ্যতা।


1

শিম এমন একটি জাভা শ্রেণি যা পদ্ধতির নাম যা সম্পত্তি , পদ্ধতিগুলির জন্য জাভা বিন নির্দেশিকা (যাকে ডিজাইনের ধরণগুলিও বলা হয়) অনুসরণ করে এবং ইভেন্টগুলির। সুতরাং, শিম শ্রেণীর যে কোনও পাবলিক পদ্ধতি যা কোনও সংখ্যার সংজ্ঞার অংশ না, সেগুলি শিম পদ্ধতি। সর্বনিম্ন, একটি জাভা শ্রেণি এমনকি একক সদস্য হিসাবে সম্পত্তি (অবশ্যই পাবলিক গেটর এবং সেটটারের সাথে প্রয়োজনীয়), একমাত্র সদস্য হিসাবে পাবলিক পদ্ধতি বা কেবলমাত্র একটি জন ইভেন্ট ইভেন্ট শোনার নিবন্ধকরণ পদ্ধতি জাভা বিন be তদতিরিক্ত, সম্পত্তিটি হয় কেবলমাত্র পঠনযোগ্য সম্পত্তি হতে পারে (একটি গিটার পদ্ধতি রয়েছে তবে সেটার নেই) বা কেবল লেখার সম্পত্তি (কেবলমাত্র সেটার পদ্ধতি রয়েছে)। যে কোনও বিনবক্স সরঞ্জাম বা ধারককে দৃশ্যমান হতে জাভা বিনকে একটি সর্বজনীন শ্রেণি হওয়া দরকার। ধারকটি অবশ্যই এটি ইনস্ট্যান্ট করতে সক্ষম হবে; সুতরাং, এটি একটি পাবলিক কনস্ট্রাক্টর অবশ্যই থাকতে হবে। JavaBeans স্পেসিফিকেশনকোনও ধারক এটি ইনস্ট্যানিয়েট করার জন্য কোনও শিমের সার্বজনীন শূন্য-আরোগ্য নির্মাণকারী, সুস্পষ্ট বা ডিফল্ট থাকতে হবে না। আপনি যদি সিরিয়ালযুক্ত উদাহরণ সহ কোনও ফাইল সরবরাহ করতে পারেন (এক্সটেনশন .ser সহ), একটি বেনবক্স সরঞ্জাম সেই ফাইলটি প্রোটোটাইপ শিমটি ইনস্ট্যান্ট করতে ব্যবহার করতে পারে। অন্যথায়, শিমের অবশ্যই প্রকাশ্য বা ডিফল্ট কোনও শূন্য-আরোগ্য নির্মাণকারী থাকতে হবে।

শিমটি একবার ইনস্ট্যান্ট হয়ে গেলে জাভা বিন এপিআই (জাভা.বিয়ানস। *) এটি আত্মপরিচয় করতে পারে এবং এতে পদ্ধতি কল করতে পারে। ইন্টারফেসটি BeanInfo প্রয়োগ বা কোনও BeanInfo বাস্তবায়ন, সিম্পলবিয়ানফো ক্লাসের কোনও শ্রেণি উপলব্ধ না হলে, অন্তর্নিয়ন্ত্রণ একটি লক্ষ্য বিন দ্বারা সমর্থিত পদ্ধতিগুলি অধ্যয়ন করার জন্য প্রতিবিম্ব (অন্তর্নিহিত অন্তঃকরণ) ব্যবহার করে এবং তারপরে ছাড়ের জন্য সাধারণ নকশার ধরণগুলি (নির্দেশিকা) প্রয়োগ করে এই বৈশিষ্ট্যগুলি কী কী বৈশিষ্ট্য, ইভেন্ট এবং সর্বজনীন পদ্ধতিগুলি সমর্থন করে। যদি কোনও শ্রেণি ইন্টারফেসটি BeanInfo প্রয়োগ করে (একটি বিন বিনের জন্য, এটি অবশ্যই FooBeanInfo নামকরণ করা উচিত) উপলব্ধ থাকে, এপিআই অন্তর্নিহিত অন্তর্নিবেশকে বাইপাস করে এবং পাবলিক পদ্ধতিগুলি (getPropertyDescriptor (), getMethodDescripttors (), getEventSetDescripttors ()) পেতে এই শ্রেণীর জন্য তথ্য। সিম্পলবিয়ানফোন প্রসারিত কোনও শ্রেণি যদি উপলব্ধ থাকে, সিম্পলবিয়ানফোন পাবলিক পদ্ধতিগুলির (গেটপ্রোপার্টিডিজিপ্টর (), গেটমথডিসিপেক্টর (), getEventSetDescripttors ()) ওভাররাইড করা হয়েছে তার উপর নির্ভর করে, তথ্যগুলি পেতে সেগুলি ওভাররাইড হওয়া পদ্ধতিগুলি ব্যবহার করবে; এমন কোনও পদ্ধতির জন্য যা ওভাররাইড করা হয় না, এটি সম্পর্কিত অন্তর্নিবেশের সাথে সম্পর্কিত হবে। কোনও শিমের উপর কোনও অন্তর্নিহিত অন্তর্মুখীতা চালিত না হওয়া সত্ত্বেও কোনও শিমকে তাত্ক্ষণিকভাবে চালিত করা দরকার। সুতরাং, একটি পাবলিক জেরি-আরগস কনস্ট্রাক্টরের প্রয়োজনীয়তা। তবে অবশ্যই এটির স্বীকৃতি পাওয়ার জন্য সিরিয়ালাইজেবল বা বাহ্যিক ইন্টারফেসের প্রয়োজনীয়তা নেই। তবে জাভা বিন স্পেসিফিকেশন বলছে, 'আমরা চাই এটি একটি ক্ষুদ্র বিনের সাধারণ ক্ষেত্রে "তুচ্ছ" হতে চাই যা কেবল তার অভ্যন্তরীণ অবস্থাটি সংরক্ষণ করতে চায় এবং এটি সম্পর্কে ভাবতে চায় না।' সুতরাং, সমস্ত মটরশুটি অবশ্যই সিরিয়ালাইজেবল বা বহিরাগতযোগ্য ইন্টারফেস প্রয়োগ করতে হবে। সামগ্রিকভাবে, জাভাবীনের স্পেসিফিকেশন কোনও শিমের গঠন কী তা সম্পর্কে কঠোর এবং দ্রুত নয়। "জাভাবীনের উপাদানগুলি লেখা আশ্চর্যরকম সহজ You একটি বিন - সরঞ্জামগুলি যেগুলি মটরশুটি ব্যবহার করে তা আপনার শিমকে চিনতে ও ব্যবহার করতে সক্ষম হবে। তুচ্ছভাবে, এমনকি নিম্নলিখিত শ্রেণিটি একটি জাভা বিন,

public class Trivial implements java.io.Serializable {}

বলুন, শিমের কনস্ট্রাক্টরের কিছু প্যারামিটার রয়েছে। ধরুন কিছু সাধারণ ধরণের। ধারকটি তাদের কী কী মূল্য নির্ধারণ করতে পারে তা নাও জানতে পারে; এমনকি যদি এটি হয় তবে ফলাফলটি পুনরায় ব্যবহারযোগ্য হবে না। এটি কেবল তখনই বুদ্ধিমান হতে পারে যখন ব্যবহারকারী বসন্ত মটরশুটি হিসাবে এনোটেশন বা এক্সএমএল কনফিগারেশন ফাইলগুলি কনফিগার (মানগুলি নির্দিষ্ট করে) করতে পারেন। এবং ধরুন কিছু প্যারামিটারগুলি শ্রেণি বা ইন্টারফেসের ধরণের। আবার, ধারকটি এটি নির্ধারণ করতে কোন মানগুলি জানত না। এটি কেবল তখনই বোধগম্য হতে পারে যখন ব্যবহারকারী টীকাগুলি বা এক্সএমএল কনফিগারেশন ফাইলগুলি দ্বারা কনফিগার করতে পারেন (নির্দিষ্ট বিষয়গুলি নির্দিষ্ট করুন)। তবে বসন্তে (এক্সএমএল কনফিগারেশন ফাইলের মাধ্যমে), কনস্ট্রাক্টর আর্গুমেন্টগুলিকে নির্দিষ্ট স্ট্রাক্ট (স্ট্রিং নাম সহ) নির্ধারণ করা (কনস্ট্রাক্টর আর্গুমেন্টের বৈশিষ্ট্য বা উপাদান) টাইপসেফ নয়; এটি মূলত রিসোর্স ইঞ্জেকশনের মতো। অন্যান্য বসন্ত মটরশুটি (যা সহযোগী হিসাবে পরিচিত; একটি কনস্ট্রাক্টর আর্গুমেন্ট উপাদান হিসাবে উপাদান মাধ্যমে) রেফারেন্স করা মূলত নির্ভরতা ইনজেকশন এবং তাই টাইপসেফ হয়। স্পষ্টতই, একটি নির্ভরতা (সহযোগী শিম) এর ইনজেকশন পরামিতিগুলির সাথে কোনও কনস্ট্রাক্টর থাকতে পারে; এই ইনজেকশন নির্ভরতা (ies) এর সাথে প্যারামিটার ইত্যাদির সাথে কনস্ট্রাক্টর থাকতে পারে। এই দৃশ্যে, শেষ অবধি, আপনার কিছু শিমের ক্লাসের প্রয়োজন হবে (যেমন, মাইবিয়ান.class) যা ধারক কেবল নতুন মাইবিয়ান () কল করে কনস্ট্রাক্টরের উপর নির্ভরতা ইনজেকশনের মাধ্যমে অন্যান্য সহযোগী মটরশুটি তৈরি করার আগে এটি ইনস্ট্যান্ট করতে পারে — সুতরাং, প্রয়োজনীয়তার জন্য মটরশুটি জনসাধারণের শূন্য-আরোগ্য নির্মাণকারী আছে। মনে করুন, যদি কোনও ধারক নির্ভরতা ইনজেকশন সমর্থন করে না এবং / অথবা কিছু টীকা বা এক্সএমএল কনফিগারেশন ফাইলগুলি যেমন বসন্তের মতো নির্মাণের জন্য সাধারণ ধরণের মান নির্ধারণের অনুমতি দেয় না, শিম নির্মাতাদের পরামিতি থাকা উচিত নয়। এমনকি একটি বসন্ত মটরশুটি অ্যাপ্লিকেশনটিতে জনসাধারণের শূন্য-আরোগ্য কনস্ট্রাক্টর থাকতে কিছু শিমের প্রয়োজন হবে (উদাহরণস্বরূপ, এমন একটি দৃশ্যে যেখানে আপনার বসন্ত অ্যাপ্লিকেশনটিতে কেবল সাধারণ ধরণের নির্মাতা যুক্তি হিসাবে কোনও বিন নেই)।

জেএসএফ পরিচালিত মটরশুটি একটি ওয়েব পাত্রে চালিত। এগুলি হয় @ ম্যানেজডবিয়ান টিকা দিয়ে বা কোনও অ্যাপ্লিকেশন কনফিগারেশন রিসোর্স ফাইল পরিচালিত-বিন.এক্সএমএল দ্বারা কনফিগার করা যায়। তবে এটি কেবল রিসোর্স ইনজেকশনের মাধ্যমে ইনজেকশন সমর্থন করে (টাইপসেফ নয়); কনস্ট্রাক্টরগুলিতে ইনজেকশনের জন্য উপযুক্ত নয়। দ্যJSF বৈশিষ্টপরিচালিত মটরশুটিগুলির অবশ্যই একটি সর্বজনীন শূন্য-যুক্তি নির্মাণকারী থাকতে হবে। আরও বলা হয়েছে, “এই স্পেসিফিকেশনের ২.৩ সংস্করণ অনুসারে, এই বিভাগে উল্লিখিত ম্যানেজ করা শিমের সুবিধাটি কঠোরভাবে নিরুত্সাহিত করা হয়েছে। একই সমস্যা সমাধানের জন্য আরও ভাল এবং আরও একাত্মকভাবে সংহত সমাধান হ'ল জেএসআর -335-তে উল্লিখিত কনটেক্সটস এবং ডিপেন্ডেন্সি ইনজেকশন (সিডিআই) ব্যবহার করা। "অন্য কথায়, সিডিআই পরিচালিত মটরশুটি ব্যবহার করা হবে, যা কনস্ট্রাক্টরদের উপর টাইপসএফ নির্ভরতা ইনজেকশন সরবরাহ করে offers বসন্ত মটরশুটি থেকে সিডিআই স্পেসিফিকেশন ম্যানেজড বিনস স্পেসিফিকেশন গ্রহণ করে, যা কেবল ওয়েব স্তরের নয়, জেই প্ল্যাটফর্মের সমস্ত ধারকগুলিতে প্রযোজ্য Thus সুতরাং, ওয়েব ধারকটিকে সিডিআই স্পেসিফিকেশন বাস্তবায়ন করতে হবে।

পরিচালিত বিন স্পেসিফিকেশন থেকে এখানে একটি নিষ্কাশন "পরিচালিত মটরশুটি হ'ল নূন্যতম প্রয়োজনীয়তা সহ ধারক-পরিচালিত অবজেক্টস, অন্যথায় সংক্ষেপে" POJOs "(সাধারণ পুরাতন জাভা অবজেক্টস) এর অধীনে পরিচিত ... এগুলিকে জাভা এসই প্ল্যাটফর্মে পাওয়া জাভাবিয়ান উপাদান উপাদানটির জাভা ইই প্ল্যাটফর্ম-বর্ধিত সংস্করণ হিসাবে দেখা যেতে পারে ...। পাঠক এটি মিস করবেন না যে ম্যানেজড শিমের জাভাসার্ভার ফেসস (জেএসএফ) প্রযুক্তিতে পাওয়া সমকামী সুবিধার পূর্বস্বর আছে ... এই স্পেসিফিকেশনে সংজ্ঞায়িত মটরশুটি জেএসএফ-এ পাওয়া লোকদের একটি সাধারণীকরণের প্রতিনিধিত্ব করে; বিশেষত, পরিচালিত মটরশুটি জাভা ইই অ্যাপ্লিকেশনটিতে যে কোনও জায়গায় ব্যবহার করা যেতে পারে, কেবল ওয়েব মডিউলগুলিতেই নয়। উদাহরণস্বরূপ, বেসিক উপাদান মডেলে, পরিচালিত বিনগুলি অবশ্যই কোনও যুক্তিযুক্ত কনস্ট্রাক্টর সরবরাহ করতে হবে, তবে একটি স্পেসিফিকেশন যা পরিচালিত বিনগুলিতে তৈরি করে, যেমন সিডিআই (জেএসআর -৯৯৯), সেই প্রয়োজনীয়তাটি শিথিল করতে পারে এবং ম্যানেজ করা শিমগুলি আরও জটিল স্বাক্ষরযুক্ত কনস্ট্রাক্টরকে সরবরাহ করতে দেয়, যতক্ষণ না তারা কিছু সু-সংজ্ঞায়িত নিয়ম মেনে চলে ... একটি পরিচালিত শিম এমনটি হওয়া উচিত নয়: একটি চূড়ান্ত শ্রেণি, একটি বিমূর্ত শ্রেণি, একটি স্থিতিশীল অভ্যন্তর শ্রেণি । একটি নিয়মিত জাভাবিয়ান উপাদানগুলির মতো একটি পরিচালিত বিন বিন্যাসযোগ্য হতে পারে না। " সুতরাং, পরিচালিত মটরশুটিগুলির স্পেসিফিকেশন, অন্যথায় POJOs বা POJO বিন হিসাবে পরিচিত, সিডিআই হিসাবে বর্ধনের অনুমতি দেয়।

সিডিআই স্পেসিফিকেশন হ'ল পরিচালিত মটরশুটিগুলি পুনরায় সংজ্ঞা দেয়: জাভা ইইতে চলাকালীন, একটি শীর্ষ স্তরের জাভা শ্রেণি যদি প্রয়োজনীয়তা পূরণ করে তবে একটি পরিচালিত শিম:

• এটি কোনও অন্তর্গত শ্রেণি নয়। • এটি একটি অ-বিমূর্ত শ্রেণি, বা @ ডেকোরেটর টিকা দেওয়া হয়। • এটি javax.enterprise.inject.spi.Existance বাস্তবায়ন করে না। • এটি @ ভেটোড বা টিকিট @ ভেটোডে কোনও প্যাকেজে টিকা নেই। • এটির একটি উপযুক্ত কনস্ট্রাক্টর রয়েছে: হয়: ক্লাসে কোনও প্যারামিটার না দিয়ে একটি কনস্ট্রাক্টর থাকে, বা ক্লাসটি একটি কনস্ট্রাক্টরকে @ ইনজেক্টটি টিকা হিসাবে ঘোষণা করে।

এই শর্তগুলি পূরণ করে এমন সমস্ত জাভা ক্লাস পরিচালনা করা মটরশুটি হয় এবং এইভাবে কোনও পরিচালিত শিমের সংজ্ঞা দেওয়ার জন্য কোনও বিশেষ ঘোষণার প্রয়োজন হয় না। অথবা

যদি এটি অন্য কোনও জাভা ইই স্পেসিফিকেশন দ্বারা পরিচালিত শিম হিসাবে সংজ্ঞায়িত করা হয় এবং যদি

• এটি কোনও ইজেবি উপাদান-সংজ্ঞায়িত টীকা দিয়ে টীকায়িত করা হয় না বা ইজবি-জার.এক্সএমএলে ইজেবি শিমের শ্রেণি হিসাবে ঘোষিত হয় না।

স্প্রিং শিমের বিপরীতে এটি সাধারণ ধরণের কন্সট্রাক্টরদের সমর্থন করে না, এটি যদি স্প্রিংয়ের মতো এক্সএমএল কনফিগারেশন ফাইল বা কোনও টীকাগুলির সাথে কনফিগারেশন সমর্থন করে তবে সম্ভব হতে পারে।

ইজেবিগুলি একটি ইজেবি পাত্রে চালিত হয়। এর স্পেসিফিকেশনবলেছেন: "একটি সেশনের বিনের উপাদানটি একটি পরিচালিত বিন" "" শ্রেণীর অবশ্যই একটি পাবলিক কনস্ট্রাক্টর থাকতে হবে যে কোনও যুক্তিই গ্রহণ করে না, "এটি উভয় সেশন বিন এবং বার্তা-চালিত শিমের জন্য বলে। সেশনবিয়ান ইন্টারফেস বা সিরিয়ালাইজেবল ইন্টারফেস বাস্তবায়নের প্রয়োজন নেই। " জেএসএফ মটরশুটি হিসাবে একই কারণে, যে EJB3 নির্ভরতা ইনজেকশনটি মূলত রিসোর্স ইনজেকশন, জেএসএফ বিনগুলি যুক্তিযুক্ত কনস্ট্রাক্টরকে সমর্থন করে না, এটি নির্ভরতা ইনজেকশনের মাধ্যমে। তবে, যদি ইজেবি ধারক সিডিআই প্রয়োগ করে, "Oচ্ছিকভাবে: শ্রেণীর একটি থাকতে পারে ইনজেক্ট টীকা সহ অতিরিক্ত কন্সট্রাক্টর মন্তব্য করেছেন, "এটি উভয় সেশন বিন এবং বার্তা চালিত শিমের জন্য বলে কারণ," একটি ইজেবি সিডিআই বিন বিন সংরক্ষণাগারে প্যাকেজড এবং জাভ্যাক্স.এন্টারপ্রাইজ। ইনজেক্টের সাথে টিকা দেওয়া হয়নি et শিম। "


0

অনুশীলনে, মটরশুটি কেবলমাত্র এমন জিনিস যা ব্যবহার করা সহজ। তাদের সিরিয়াল করার অর্থ সহজেই এগুলি চালিয়ে যাওয়া সক্ষম করা (সহজেই পুনরুদ্ধার করা ফর্মটিতে সঞ্চয় করুন)।

বাস্তব বিশ্বে শিমের সাধারণ ব্যবহার:

  • সাধারণ পুনরায় ব্যবহারযোগ্য বস্তুগুলি POJO (সাধারণ পুরাতন জাভা অবজেক্টস)
  • ভিজ্যুয়াল অবজেক্টস
  • স্প্রিং আইটেমগুলি পরিচালনা করার জন্য মটরশুটি ব্যবহার করে (উদাহরণস্বরূপ, ব্যবহারকারীর অবজেক্ট যা সেশনে ক্রমিক করা প্রয়োজন)
  • জেএসএফ বিন (জেএসএফ পুরানো বেশ পুরানো প্রযুক্তি) বা জেএসপি বিনসের মতো আরও জটিল বস্তুগুলি, ইজেবি (এন্টারপ্রাইজ জাভা বিন)

সুতরাং প্রকৃতপক্ষে, বিনগুলি কেবল একটি সম্মেলন / মান জাভা অবজেক্টের কাছ থেকে এমন কিছু প্রত্যাশা করার জন্য যা এটি আচরণ করবে (সিরিয়ালাইজেশন) এবং এটি একটি নির্দিষ্ট উপায়ে এটি (সম্পত্তিগুলির সেটটার) পরিবর্তনের কিছু উপায় দেয়।

এগুলি কীভাবে ব্যবহার করবেন, এটি কেবল আপনার উদ্ভাবন, তবে বেশিরভাগ সাধারণ ক্ষেত্রে আমি উপরে তালিকাভুক্ত করেছি।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.