'ক্ষেত্রের জন্য এমন একটি বিনের সিম প্রয়োজন যা খুঁজে পাওয়া যায়নি' ' মোংডব ব্যবহার করে ত্রুটি বসন্তের বিশৃঙ্খল এপিআই


101

তাই আমি সপ্তাহের দম্পতিগুলিতে বসন্ত শিখছি, এই টিউটোরিয়ালটি অনুসরণ করছি

একটি রেস্টস্টুল ওয়েব পরিষেবা তৈরি করা Building

যতক্ষণ না আমি এটিকে মঙ্গোদবকে সংহত করার চেষ্টা করেছি ততক্ষণে সবকিছু ঠিক ছিল। সুতরাং আমি এই টিউটোরিয়াল অনুসরণ।

মঙ্গোডিবি দিয়ে ডেটা অ্যাক্সেস করা হচ্ছে

তবে আমার অনুশীলনটি আংশিক এখনও প্রথমটি ব্যবহার করছে। সুতরাং আমার প্রকল্প ডিরেক্টরি কাঠামো এর মত।

src/
├── main/
│   └── java/
|       ├── model/
|       |   └── User.java
|       ├── rest/
|       |   ├── Application.java
|       |   ├── IndexController.java
|       |   └── UsersController.java
|       └── service/
|           └── UserService.java
└── resources/
    └── application.properties

এটি আমার মডেল / ব্যবহারকারী.জভা ফাইল

package main.java.model;

import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;

@Document(collection="user")
public class User {

    private int age;
    private String country; 
    @Id
    private String id;
    private String name;


    public User() {
        super();
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getCountry() {
        return country;
    }

    public void setCountry(String country) {
        this.country = country;
    }
}

এটি আমার বিশ্রাম / ব্যবহারকারীকন্ট্রোলআর জাভা ফাইল

package main.java.rest;

import java.util.List;
import main.java.service.UserService;
import main.java.model.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping(value = "/users")
public class UsersController {

    @Autowired
    UserService userService;

    @RequestMapping(method = RequestMethod.GET)
    public List<User> getAllUsers() {
        return userService.findAll();
    }
}

এটি আমার পরিষেবা / ব্যবহারকারীর সেবা। জাভা ফাইল

package main.java.service;

import java.util.List;
import main.java.model.User;
import org.springframework.data.mongodb.repository.MongoRepository;

public interface UserService extends MongoRepository<User, String> {
    public List<User> findAll();
}

আমি তাদের সংকলন করতে পারি (আমি সংকলনের জন্য গ্রেড ব্যবহার করছি কারণ আমি টিউটোরিয়ালটি অনুসরণ করছি), তবে আমি যখন জার ফাইলটি চালাচ্ছি তখন এটি এই ত্রুটিটি ছুঁড়ে ফেলছিল।


আবেদন শুরু করতে ব্যর্থ


বর্ণনা:

Main.java.rest.UversController এ ফিল্ড ইউজারসেসওয়ারটি 'main.java.service.UserService' টাইপের একটি মটরশুটি দরকার যা পাওয়া যায়নি।

কর্ম:

আপনার কনফিগারেশনে 'main.java.service.UserService' টাইপের শিমের সংজ্ঞাটি বিবেচনা করুন।

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

উত্তর:


159

এটি সমাধান। সুতরাং ডিফল্টরূপে, @SpringBootApplicationঘোষণার অধীনে থাকা সমস্ত প্যাকেজগুলি স্ক্যান করা হবে।

আমার মূল শ্রেণীর ExampleApplicationযে @SpringBootApplicationঘোষণাপত্র রয়েছে তা ধরে রেখে ভিতরে ঘোষণা করা হয়েছে com.example.something, তারপরে যে সমস্ত উপাদান রয়েছে সেগুলি com.example.somethingস্ক্যান করা com.example.applicantহবে যখন স্ক্যান করা হবে না।

সুতরাং, এই প্রশ্নের ভিত্তিতে এটি করার দুটি উপায় রয়েছে । ব্যবহার

@SpringBootApplication(scanBasePackages={
"com.example.something", "com.example.application"})

এইভাবে, অ্যাপ্লিকেশনটি সমস্ত নির্দিষ্ট উপাদানগুলি স্ক্যান করবে, তবে আমি মনে করি স্কেলটি যদি আরও বড় হয়ে উঠছিল?

সুতরাং আমি আমার প্যাকেজগুলি পুনর্গঠন করে দ্বিতীয় পদ্ধতিটি ব্যবহার করি এবং এটি কার্যকর! এখন আমার প্যাকেজ কাঠামো এরকম হয়ে গেল।

src/
├── main/
│   └── java/
|       ├── com.example/
|       |   └── Application.java
|       ├── com.example.model/
|       |   └── User.java
|       ├── com.example.controller/
|       |   ├── IndexController.java
|       |   └── UsersController.java
|       └── com.example.service/
|           └── UserService.java
└── resources/
    └── application.properties

কিছুই আসলে খুব বেশি পরিবর্তন হয়নি, আমি প্যাকেজগুলি এবং ক্লাসগুলির কিছু নাম পরিবর্তন করেছি @ গুওজিং
একা রুডিয়ানতো

@EkaRudianto একটি টাইপ আছে। কোন খোলার {জন্যscanBasePackages= "com.example.something","com.example.application"
brk

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


20

আমারও একই ত্রুটি ছিল:

***************************
APPLICATION FAILED TO START
***************************

Description:

Field repository in com.kalsym.next.gen.campaign.controller.CampaignController required a bean of type 'com.kalsym.next.gen.campaign.data.CustomerRepository' that could not be found.


Action:

Consider defining a bean of type 'com.kalsym.next.gen.campaign.data.CustomerRepository' in your configuration.de here

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

@SpringBootApplication
@EnableMongoRepositories(basePackageClasses = CustomerRepository.class)
public class CampaignAPI {

    public static void main(String[] args) {
        SpringApplication.run(CampaignAPI.class, args);
    }
}

আপনার যদি একাধিক যুক্ত করার দরকার হয় তবে কোঁকড়া ধনুর্বন্ধনীগুলি ভুলে যাবেন না:

@EnableMongoRepositories(basePackageClasses
    = {
        MSASMSRepository.class, APartyMappingRepository.class
    })

14

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


12

এই থ্রেডটি এখন পুরানো তবে আমি আমার উত্তর পোস্ট করছি, যা অন্যদের জন্য কার্যকর হতে পারে।

আমারও একই প্রশ্ন ছিল. দেখা গেল যে অন্যান্য মডিউলে একই নামের আরও একটি ক্লাস রয়েছে। আমি class শ্রেণীর নামকরণ করেছি এবং এটি সমস্যার সমাধান করেছে।


10

অটো-আমদানির কারণে প্রচুর সময় ব্যয় করেছে। এর পরিবর্তে ইন্টেলিজ আইডিয়া কেন কিছুটা আমদানি করা @Serviceহয়েছে !import org.jvnet.hk2.annotations.Service;import org.springframework.stereotype.Service;


আপনি কি আপনার উত্তর আপডেট করতে এবং আপনি কি করছেন তা ব্যাখ্যা করতে পারেন। অগ্রিম অনেক ধন্যবাদ
এমজারাগোজা

4
আপনি আমার উত্তর থেকে কী বুঝতে পারলেন না? প্রকল্পটি চালানোর চেষ্টা করেও আমি প্রশ্নের মতো একই ত্রুটি পেয়েছি। কারণ আমি Serviceভুল লাইব্রেরি থেকে আমদানি করেছি ।
ভাইটালি কুজমিন

@ ভিটালিকুজমিন এখনও আপনার উত্তরের কোন স্পষ্টতা নেই। আপনার উত্তরটি সঠিক হতে পারে এবং এটি আপনার পক্ষে কাজ করতে পারে তবে আপনি এখানে যেভাবে উপস্থাপন করেছেন তা বিভ্রান্তিকর এবং পাঠক বান্ধব নয়
mannedear

4
@ মান্নার্ড আমি মনে করি যে আমার প্রথম মন্তব্যটি আপনার মন্তব্যেরও জবাব দিয়েছে।
ভিটালী কুজমিন

এই উত্তরটি +1 করলাম, আমি যেমন আমদানি ত্রুটি করেছি তেমনি! : 0 import javax.persistence.Table;পরিবর্তে import org.springframework.data.relational.core.mapping.Table;আমার মডেল। এই শিমের ত্রুটিটি ডিবাগ করতে smh 5 ঘন্টা হারিয়েছে।
কলপাজ অগ্রবাল্লা



5

সাধারণত আমরা দুটি দিক দিয়ে এই সমস্যাটি সমাধান করতে পারি:

  1. সঠিক টীকা জন্য ব্যবহার করা উচিত স্প্রিং বুট স্ক্যান শিম , মত @Component;
  2. স্ক্যানিং পথ শ্রেণীর ঠিক যেমন অন্যান্যদের উপরে উল্লিখিত অন্তর্ভুক্ত করা হবে।

যাইহোক , @ কম্পোনেন্ট, @ রিপোসিটোরি, @ সার্ভিস এবং @ কনট্রোলারের মধ্যে পার্থক্যের জন্য খুব ভাল ব্যাখ্যা রয়েছে


3

আপনার দাও ক্লাসে @ রেপোসিটরি যুক্ত করুন

উদাহরণ:

@Repository
public class DaoClassName implements IIntefaceDao {
}

2

সমস্ত @ টিকা ব্যবহার করে আমার সমস্যার সমাধান হয়েছে। (হ্যাঁ, আমি বসন্তে নতুন) আপনি যদি কোনও পরিষেবা শ্রেণি ব্যবহার করেন তবে @ সার্ভিস যুক্ত করুন, এবং @ নিয়ন্ত্রণকারী এবং @ রিপোসিটোরির জন্য একই।

তারপরে App.java- এ এই টীকাগুলি সমস্যার সমাধান করেছে (আমি জেপিএ + হাইবারনেট ব্যবহার করছি)

@SpringBootApplication
@EnableAutoConfiguration(exclude = { ErrorMvcAutoConfiguration.class })
@ComponentScan(basePackages = {"es.unileon.inso2"})
@EntityScan("es.unileon.inso2.model")
@EnableJpaRepositories("es.unileon.inso2.repository")

প্যাকেজ ট্রি:

src/
├── main/
│   └── java/
|       ├── es.unileon.inso2/
|       |   └── App.java
|       ├── es.unileon.inso2.model/
|       |   └── User.java
|       ├── es.unileon.inso2.controller/
|       |   ├── IndexController.java
|       |   └── UserController.java
|       ├── es.unileon.inso2.service/
|       |    └── UserService.java
|       └── es.unileon.inso2.repository/
|            └── UserRepository.java
└── resources/
    └── application.properties

2

আমার একই ইস্যু রয়েছে, @EnableMongoRepositories ("in.topthree.util") যোগ করে ঠিক করা হয়েছে

package in.topthree.core;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.data.mongodb.repository.config.EnableMongoRepositories;

import in.topthree.util.Student;

@SpringBootApplication
@EnableMongoRepositories("in.topthree.util")
public class Run implements CommandLineRunner {

    public static void main(String[] args) {
        SpringApplication.run(Run.class, args);
        System.out.println("Run");
    }

    @Autowired
    private Process pr;

    @Override
    public void run(String... args) throws Exception {
        pr.saveDB(new Student("Testing", "FB"));
        System.exit(0);
    }

}

এবং আমার সংগ্রহস্থলটি হ'ল:

package in.topthree.util;

import org.springframework.data.mongodb.repository.MongoRepository;

public interface StudentMongo extends MongoRepository<Student, Integer> {

    public Student findByUrl(String url);
}

এখন এটির কাজ


1

আমার টার্গেট ফোল্ডারে আমার ম্যাপার বাস্তবায়ন ক্লাসগুলি মুছে ফেলা হয়েছে, সুতরাং আমার ম্যাপার ইন্টারফেসগুলিতে আর কোনও বাস্তবায়ন ক্লাস ছিল না। এইভাবে আমি একই ত্রুটি পেয়েছিField *** required a bean of type ***Mapper that could not be found.

আমাকে কেবল ম্যাপেনের সাথে আমার ম্যাপার বাস্তবায়নগুলি পুনরায় তৈরি করতে হয়েছিল এবং প্রকল্পটি রিফ্রেশ করতে হয়েছিল ...


1

আমি মঙ্গো রিপোজিটরি সহ স্প্রিং ওয়েবফ্লাক্স ব্যবহার করার সময় সাহায্যের সন্ধানে এই পোস্টে এসেছি।

আমার ত্রুটি মালিকের মতো ছিল

Field usersRepository in foobar.UsersService required
a bean of type 'foobar.UsersRepository' that could not be found.

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

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

প্রথম জিনিসটি হ'ল গ্রহণযোগ্য হিসাবে চিহ্নিত উত্তরে যা উল্লেখ করা হয়েছিল সে সম্পর্কে আপনাকে অবশ্যই মনে রাখতে হবে - প্যাকেজ শ্রেণিবিন্যাস।

দ্বিতীয় গুরুত্বপূর্ণ বিষয় হ'ল আপনি যদি ওয়েলফ্লাক্স ব্যবহার করেন তবে স্প্রিং এমভিসি ব্যবহার করার সময় আপনাকে কিছু আলাদা প্যাকেজ ব্যবহার করতে হবে যেমন মঙ্গোডিবি-র জন্য আপনাকে যুক্ত করতে হবে

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-mongodb-reactive</artifactId>
</dependency>

শেষে- প্রতিক্রিয়াশীল


1

আমারও একই প্রশ্ন ছিল. আমার ভুলটি হ'ল আমি সার্ভিস ইন্টারফেসে @ সার্ভিস টিকাটি ব্যবহার করেছি। @ সার্ভিস টিকাটি সার্ভিসআইএমপিএল ক্লাসে প্রয়োগ করা উচিত।


1

আপনার দাও শ্রেণিতে @ রেপোসিটরি যুক্ত করুন

    @Repository
    public interface UserDao extends CrudRepository<User, Long> {
         User findByUsername(String username);
         User findByEmail(String email);    
      }

আপনি যদি ইতিমধ্যে ক্রডরোপোসিটরিটি বাড়িয়ে থাকেন তবে @ রিপোসিটরি যুক্ত করার দরকার নেই
কারেন গোহ

1

আমার একই সমস্যা ছিল আমি কন্ট্রোলার থেকে @ অটোভায়ার্ড টিকা সরিয়েছি। যদি আপনার সংগ্রহশালাটি একটি শ্রেণি হয় তবে os


1

আপনি যদি বসন্ত বুট ব্যবহার করেন তবে আপনাকে নির্ভরশীল হিসাবে স্প্রিং-বুট-স্টার্টার-ডেটা-জেপা আমদানি করতে হবে


0

দুটি সিমের একই নাম থাকলে এটি ঘটতে পারে।

Module1Beans.java:

@Configuration
public class Module1Beans {
    @Bean
    public GoogleAPI retrofitService(){
        Retrofit retrofit = new Retrofit.Builder()
                .baseUrl("https://www.google.com/")
                .addConverterFactory(JacksonConverterFactory.create())
                .build();
        return retrofit.create(GoogleAPI.class);
    }
}

Module2Beans.java:

@Configuration
public class Module2Beans {
    @Bean
    public GithubAPI retrofitService(){
        Retrofit retrofit = new Retrofit.Builder()
                .baseUrl("https://www.github.com/")
                .addConverterFactory(JacksonConverterFactory.create())
                .build();
        return retrofit.create(GithubAPI.class);
    }
}

নামের একটি শিমটি retrofitServiceপ্রথমে তৈরি করা হয় এবং এটি টাইপ হয় GoogleAPI, তারপরে একটি GithubAPIধনুক দ্বারা আচ্ছাদিত হয় তারা উভয়ই একটি retrofitService()পদ্ধতি দ্বারা তৈরি করা হয় । এখন যখন আপনি @Autowiredএকটি GoogleAPIআপনার মত একটি বার্তা পাবেনField googleAPI in com.example.GoogleService required a bean of type 'com.example.rest.GoogleAPI' that could not be found.


0

আমার ক্ষেত্রে আমি মাত্র একই স্তরের মডেল, নিয়ামক, পরিষেবা প্যাকেজগুলির সাথে একটি প্যাকেজে (com.example.start) ক্লাস মাইপ্রোজেক্ট অ্যাপ্লিকেশন রেখেছি।


0

আমি জানি এটি পুরানো, তবে আমার 5 সেন্ট যোগ করতে চাই।

আমি প্রয়োগ করেছি .serviceএবং .service.implএকটি ফোল্ডার কাঠামোতে পরিষেবাটি প্রয়োগের সাথে পৃথক করতে to সার্ভিস ইমপ্লিমেন্টেশন টুকরা প্রয়োগ করতে ভুলবেন না।


0

শিম তৈরি এবং ইনজেকশনের জন্য বসন্তের জন্য আপনার সংস্থার প্রসঙ্গ অনুসারে ক্লাসটি @ কমপোनेट, @ পরিষেবা, @ সংগ্রহস্থল ইত্যাদির সাথে চিহ্নিত করা উচিত

package main.java.service;

import java.util.List;
import main.java.model.User;
import org.springframework.data.mongodb.repository.MongoRepository;
@Repository
public interface UserService extends MongoRepository<User, String> {
    public List<User> findAll();
}

0

আমার জন্য এই বার্তা:

org.apache.wicket.WicketRuntimeException: Can't instantiate page using constructor 'public org.package.MyClass(org.apache.wicket.request.mapper.parameter.PageParameters)' and argument ''. Might be it doesn't exist, may be it is not visible (public).

"শীর্ষে আমার উইকেট ইউনিট পরীক্ষায় আপনাকে ম্যানুয়ালি সেই শিমটি পছন্দ মতো যুক্ত করতে হবে" বোঝানো হয়েছে

appContext.putBean(myClass);

0

আমি এখানে ওপি অনুসারে সমস্ত পদক্ষেপ এবং নির্দেশাবলী অনুসরণ করেছি, ব্যবহারকারীর নাম এবং পাসওয়ার্ডের চারপাশে ফাঁকা জায়গার যত্ন নিয়েছি (যদিও স্প্রিং প্রপার্টি ফাইলে সাদা জায়গাগুলির যত্ন নেয়), তখনও মুখোমুখি ছিল

could not find bean for ___Repository

(আপনি ইন্টারফেস যা জেআরপিপোসিটরি প্রসারিত)

বা @ সক্ষম জেআরপিওপোসিটোরি যুক্ত করার পরে

could not find bean for EntityManagerFactory

আমি এটিকে বসন্ত বুট স্টার্টার মূল সংস্করণটি ২.৩.২ থেকে ২.২.১ থেকে pom.xML এ পরিবর্তন করে সমাধান করেছি

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.2.1.RELEASE</version>
    <relativePath /> <!-- lookup parent from repository -->
</parent>

এবং নিম্নলিখিত নির্ভরতা যুক্ত

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <scope>runtime</scope>
</dependency>

আমার নিম্নলিখিতগুলির কোনও যোগ করার দরকার নেই, স্প্রিং বুট এটি নিজেই করে

  1. @ সক্ষম জর্পোসিপটিসিটি - যেহেতু আমার কাছে ইতিমধ্যে একই মূল প্যাকেজ সহ সমস্ত শ্রেণি ছিল
  2. স্প্রিং.ডাটা.জেপা.রেপোসিটিরি.অ্যাপলাইশন.পোপার্টিগুলিতে সক্ষম
  3. স্প্রিং.ড্যাটাসোস.ড্রাইভারক্লাসনেম = com.mysql.jdbc. অ্যাপ্লিকেশন বৈশিষ্ট্যে ড্রাইভ

0

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

সমস্যা সমাধানের জন্য, @EnableFeignClientsআপনার অ্যাপ্লিকেশন শ্রেণিতে টিকাটি যুক্ত করতে হবে:

@SpringBootApplication
// ... (other pre-existing annotations) ...
@EnableFeignClients // <------- THE IMPORTANT ONE
public class Application {

এইভাবে, @EnableMongoRepositoriesফিক্সটি উপরে বর্ণিত ফিক্সের অনুরূপ । এটি লজ্জাজনক যে এই জেনেরিক ত্রুটি বার্তায় প্রতিটি ধরণের পরিস্থিতিতে যেমন একটি উপযুক্ত সমাধান প্রয়োজন ...


0

দুই ধরণের মঙ্গো নির্ভরতা -

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-mongodb-reactive</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency> 

দুটি ধরণের সংগ্রহস্থল -

MongoRepository
ReactiveMongoRepository

আপনি সঠিক সংমিশ্রণটি ব্যবহার করছেন তা নিশ্চিত করুন।


-1

এটি ব্যবহার করে আমার সমস্যার সমাধান হয়েছে।

@SpringBootApplication(scanBasePackages={"com.example.something", "com.example.application"})
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.