স্প্রিং বুট এবং মঙ্গোডিবিতে সংযোগের বিশদটি কীভাবে কনফিগার করবেন?


90

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

আমি যে ডাটাবেসটি ব্যবহার হতে চলেছি এবং হোস্টের ইউআরএল / পোর্ট যা মঙ্গোডিবি চালায় তা উল্লেখ করতে চাই।

কোন ইঙ্গিত বা টিপস?

উত্তর:


106

বুট ডক্সের উদ্ধৃতি দিতে :

আপনি spring.data.mongodb.uriইউআরএল পরিবর্তন করতে সম্পত্তি সেট করতে পারেন , বা বিকল্পভাবে একটি নির্দিষ্ট করতে পারেন host/port। উদাহরণস্বরূপ, আপনি নিম্নলিখিতগুলিতে এটি ঘোষণা করতে পারেন application.properties:

spring.data.mongodb.host=mongoserver
spring.data.mongodb.port=27017

spring.data.mongodbউপসর্গের জন্য সমস্ত উপলভ্য বিকল্পগুলি এর ক্ষেত্রগুলি MongoProperties:

private String host;

private int port = DBPort.PORT;

private String uri = "mongodb://localhost/test";

private String database;

private String gridFsDatabase;

private String username;

private char[] password;

আরে, আমি কি স্প্রিং বুট ব্যবহার করে কোনও সাধারণ ওয়েবঅ্যাপের জন্য একই কাজ করব? আমি অ্যাপ্লিকেশন.প্রপার্টি ফাইলটি কোথায় খুঁজে পাব?
— থিও

আপনার নিজের এটি লিখতে হবে, যদি আপনি ডিফল্ট বিকল্পগুলির উপর নির্ভর করতে না চান: ডকস.স্প্রিং.ইউ
— আর্টেম বিলান

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

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

দয়া করে এই বিষয়ে রেফারেন্স ম্যানুয়ালটি পড়ুন: docs.spring.io/spring-boot/docs/current/references/html/…
— আর্টেম বিলান

32

spring.data.mongodb.hostএবং spring.data.mongodb.portআপনি ব্যবহার করছেন যদি সমর্থিত নয় মোঙ্গো 3.0 জাভা চালক । এই ধরনের ক্ষেত্রে, spring.data.mongodb.uriসমস্ত কনফিগারেশন সরবরাহ করার জন্য ব্যবহার করা উচিত:

spring.data.mongodb.uri=mongodb://user:secret@mongo1.example.com:12345

12
আপনার যদি ব্যবহারকারী বা পাসওয়ার্ড না থাকে তবে কী হবে?
— জেসি

@ জেসি এই ক্ষেত্রে এটির জরিমানা, ডিফল্টরূপে মঙ্গোর কোনও প্রমাণীকরণের প্রয়োজন হয় না তাই সংযোগটি সেই ক্ষেত্রে কাজ করবে।
— jmojico

বসন্ত.ডাটা.মঙ্গোদবি.উরিতে অটোর সংযোগ দেওয়ার কোনও বিকল্প আছে কি?
— পি সতীশ প্যাট্রো

এটি একক বসন্ত ডেটা প্রয়োগের জন্য কাজ করবে?
— সুমন্ত ভারদা

20

কোনও মাভেন প্রকল্পে src/main/resources/application.ymlনিম্নলিখিত সামগ্রীগুলির সাথে একটি ফাইল তৈরি করুন :

spring.profiles: integration
# use local or embedded mongodb at localhost:27017
---
spring.profiles: production
spring.data.mongodb.uri: mongodb://<user>:<passwd>@<host>:<port>/<dbname>

স্প্রিং বুট স্বয়ংক্রিয়ভাবে আপনার অ্যাপ্লিকেশনটি কনফিগার করতে এই ফাইলটি ব্যবহার করবে। তারপরে আপনি আপনার বসন্ত বুট অ্যাপ্লিকেশনটি ইন্টিগ্রেশন প্রোফাইল দিয়ে শুরু করতে পারেন (এবং আপনার স্থানীয় মঙ্গোডিবি ব্যবহার করুন)

java -jar -Dspring.profiles.active=integration your-app.jar

বা প্রোডাকশন প্রোফাইলের সাথে (এবং আপনার উত্পাদন মঙ্গোডিবি ব্যবহার করুন)

java -jar -Dspring.profiles.active=production your-app.jar

বসন্ত.ডাটা.মঙ্গোদবি.উরিতে অটোর সংযোগ দেওয়ার কোনও বিকল্প আছে কি?
— পি সতীশ প্যাট্রো

16

আপনি অ্যাবস্ট্রাকমঙ্গো কনফিগারেশন প্রসারিত করে আরও বিশদ সংজ্ঞায়িত করতে পারেন।

@Configuration
@EnableMongoRepositories("demo.mongo.model")
public class SpringMongoConfig extends AbstractMongoConfiguration {
    @Value("${spring.profiles.active}")
    private String profileActive;

    @Value("${spring.application.name}")
    private String proAppName;

    @Value("${spring.data.mongodb.host}")
    private String mongoHost;

    @Value("${spring.data.mongodb.port}")
    private String mongoPort;

    @Value("${spring.data.mongodb.database}")
    private String mongoDB;

    @Override
    public MongoMappingContext mongoMappingContext()
        throws ClassNotFoundException {
        // TODO Auto-generated method stub
        return super.mongoMappingContext();
    }
    @Override
    @Bean
    public Mongo mongo() throws Exception {
        return new MongoClient(mongoHost + ":" + mongoPort);
    }
    @Override
    protected String getDatabaseName() {
        // TODO Auto-generated method stub
        return mongoDB;
    }
}

ব্যবহারকারী নাম এবং পাসওয়ার্ড নির্দিষ্ট করা হয় কোথায়? এটি অননুমোদিত খাঁজ দেয়, যখন আমরা কেবল এটিকে প্রয়োগকরণ.প্রোপার্টিগুলিতে সংজ্ঞায়িত করি এবং তারপরে অ্যাবস্ট্রাকমঙ্গো কনফিগারেশন প্রসারিত করি।
— নূর সৈয়দ

এটি অ্যাপ্লিকেশন.প্রপ্রেটিসের অভ্যন্তরে থাকবে
— মারি মুরতানি

এটি করতে প্রোফাইল ভেরিয়েবলটি ব্যবহার করা কি ঠিক? if(profileActive=="dev"){ return new Fongo(getDatabaseName()).getMongo();} else { return new MongoClient(url, port); }
— anat0lius

13

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

spring.data.mongodb.host=127.0.0.1
spring.data.mongodb.port=27017
spring.data.mongodb.authentication-database=admin
spring.data.mongodb.username=<username specified on MONGO_INITDB_ROOT_USERNAME>
spring.data.mongodb.password=<password specified on MONGO_INITDB_ROOT_PASSWORD>
spring.data.mongodb.database=<the db you want to use>

4
এটি MONGO_INITDB_ROOT_USERNAMEতবে MONGO_INITDB_ROOT_PASSWORDক এর ক্ষেত্রে নয় password।
— কামিল উইটকোভস্কি

0

সংযোগের জন্য আরও নিয়ন্ত্রণ সরবরাহ করে কাস্টম মঙ্গোস্লায়েন্ট তৈরি করে আপনি কীভাবে স্প্রিং বুট ২.০ এ করতে পারেন তা এখানে রয়েছে ,

সম্পূর্ণ উত্স কোডের জন্য দয়া করে গিথব লিংকটি অনুসরণ করুন

@Configuration
@EnableMongoRepositories(basePackages = { "com.frugalis.repository" })
@ComponentScan(basePackages = { "com.frugalis.*" })
@PropertySource("classpath:application.properties")
public class MongoJPAConfig extends AbstractMongoConfiguration {

    @Value("${com.frugalis.mongo.database}")
    private String database;
    @Value("${com.frugalis.mongo.server}")
    private String host;
    @Value("${com.frugalis.mongo.port}")
    private String port;
    @Value("${com.frugalis.mongo.username}")
    private String username;
    @Value("${com.frugalis.mongo.password}")
    private String password;


    @Override
    protected String getDatabaseName() {
        return database;
    }

    @Override
    protected String getMappingBasePackage() {
        return "com.frugalis.entity.mongo";
    }

    @Bean
    public MongoTemplate mongoTemplate() throws Exception {
        return new MongoTemplate(mongoClient(), getDatabaseName());
    }

    @Override
    @Bean
    public MongoClient mongoClient() {

        List<MongoCredential> allCred = new ArrayList<MongoCredential>();
        System.out.println("???????????????????"+username+" "+database+" "+password+" "+host+" "+port);
        allCred.add(MongoCredential.createCredential(username, database, password.toCharArray()));
        MongoClient client = new MongoClient((new ServerAddress(host, Integer.parseInt(port))), allCred);
        client.setWriteConcern(WriteConcern.ACKNOWLEDGED);

        return client;
    }} 

এখানে কিভাবে? কি - একটি ক্লাস যুক্ত? জেপিএ কী? এই ফাইলটিতে আপনার আমদানি কোথায়? এটি সেরা একটি অসম্পূর্ণ উত্তর।
— ব্যারিপিকার
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.