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


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.