1. खास जानकारी
स्प्रिंग फ़्रेमवर्क, फ़ाइल सिस्टम, क्लासपाथ या वेब जैसे अलग-अलग सोर्स से फ़ाइलों को आसानी से पढ़ने और लिखने के लिए ResourceLoader
ऐब्स्ट्रैक्ट उपलब्ध कराता है. आपको बस लोकप्रिय प्रोटोकॉल प्रीफ़िक्स का इस्तेमाल करके संसाधन का यूआरआई तय करना होगा. उदाहरण के लिए, लोकल फ़ाइल सिस्टम पर मौजूद किसी फ़ाइल को ऐक्सेस करने के लिए, आपको यूआरआई तय करना होगा, जैसे कि file:/data/config.yaml
.
आपको एक Spring बूट ऐप्लिकेशन लिखना होगा जो Cloud Storage में सेव की गई फ़ाइलों को ऐक्सेस करेगा. ऐसा करने के लिए, Spring Resource अब्स्ट्रक्शन और gs:
प्रोटोकॉल प्रीफ़िक्स का इस्तेमाल किया जाएगा.
ऐसा करने के लिए, Cloud Shell और Cloud SDK gcloud कमांड-लाइन टूल का इस्तेमाल करें.
आपको इनके बारे में जानकारी मिलेगी
- Cloud Storage के स्प्रिंग बूट स्टार्टर को इस्तेमाल करने का तरीका
- Spring की मदद से Cloud Storage में मौजूद फ़ाइलों को ऐक्सेस करने का तरीका
- Spring के
Resource
औरWritableResource
ऐब्स्ट्रैक्ट को इस्तेमाल करने का तरीका
आपको इन चीज़ों की ज़रूरत होगी
- Google Cloud प्रोजेक्ट
- ब्राउज़र, जैसे कि Google Chrome
- Vim, Emacs, और GNU Nano जैसे स्टैंडर्ड Linux टेक्स्ट एडिटर के बारे में जानकारी
कोडलैब का इस्तेमाल कैसे किया जाएगा?
एचटीएमएल और सीएसएस वेब ऐप्लिकेशन बनाने के अपने अनुभव को आप कितनी रेटिंग देंगे?
Google Cloud की सेवाएं इस्तेमाल करने का आपका अनुभव कैसा रहा?
2. सेटअप और ज़रूरी शर्तें
अपने हिसाब से एनवायरमेंट सेटअप करना
- Cloud Console में साइन इन करें और नया प्रोजेक्ट बनाएं या किसी मौजूदा प्रोजेक्ट का फिर से इस्तेमाल करें. (अगर आपके पास पहले से Gmail या G Suite खाता नहीं है, तो आपको एक खाता बनाना होगा.)
प्रोजेक्ट आईडी याद रखें. यह Google Cloud के सभी प्रोजेक्ट के लिए एक खास नाम होता है (ऊपर दिया गया नाम पहले ही ले लिया गया है और यह आपके लिए काम नहीं करेगा!). बाद में, इस कोडलैब को इस कोडलैब में PROJECT_ID
के तौर पर दिखाया जाएगा.
- इसके बाद, आपको Google Cloud के संसाधनों का इस्तेमाल करने के लिए, Cloud Console में बिलिंग की सुविधा चालू करनी होगी.
इस कोडलैब का इस्तेमाल करने पर, आपको ज़्यादा पैसे नहीं चुकाने होंगे. "साफ़ करना" सेक्शन में दिए गए निर्देशों का पालन करना न भूलें सेक्शन में, संसाधनों को बंद करने का तरीका बताया गया है. इससे इस ट्यूटोरियल के अलावा बिलिंग की सुविधा नहीं मिलेगी. Google Cloud के नए उपयोगकर्ता, 300USD डॉलर के मुफ़्त में आज़माने वाले प्रोग्राम में हिस्सा ले सकते हैं.
क्लाउड शेल
आपको Cloud Shell का इस्तेमाल करना होगा. यह Google Cloud में चलने वाला एक कमांड-लाइन एनवायरमेंट है.
Cloud Shell चालू करें
- Cloud Console में, Cloud Shell चालू करें पर क्लिक करें.
अगर आपने Cloud Shell का इस्तेमाल पहले कभी नहीं किया है, तो आपको इसके बारे में जानकारी देने वाली एक इंटरमीडिएट स्क्रीन (पेज के फ़ोल्ड के नीचे) दिखेगी. अगर ऐसा है, तो जारी रखें पर क्लिक करें (यह आपको फिर कभी नहीं दिखेगा). एक बार इस्तेमाल होने वाली स्क्रीन कुछ इस तरह दिखती है:
प्रावधान करने और Cloud Shell से कनेक्ट होने में कुछ ही समय लगेगा.
इस वर्चुअल मशीन में ऐसे सभी डेवलपमेंट टूल मौजूद हैं जिनकी आपको ज़रूरत पड़ेगी. यह पांच जीबी की स्थायी होम डायरेक्ट्री उपलब्ध कराता है और Google Cloud में चलता है. यह नेटवर्क की परफ़ॉर्मेंस और पुष्टि करने की प्रोसेस को बेहतर बनाता है. अगर सभी नहीं, तो इस कोडलैब में आपका बहुत सारा काम बस किसी ब्राउज़र या आपके Chromebook से किया जा सकता है.
Cloud Shell से कनेक्ट करने के बाद, आपको दिखेगा कि आपकी पुष्टि पहले ही हो चुकी है. साथ ही, यह प्रोजेक्ट पहले से ही आपके प्रोजेक्ट आईडी पर सेट है.
- यह पुष्टि करने के लिए Cloud Shell में नीचे दिया गया कमांड चलाएं कि आपकी पुष्टि हो गई है:
gcloud auth list
कमांड आउटपुट
Credentialed Accounts ACTIVE ACCOUNT * <my_account>@<my_domain.com> To set the active account, run: $ gcloud config set account `ACCOUNT`
gcloud config list project
कमांड आउटपुट
[core] project = <PROJECT_ID>
अगर ऐसा नहीं है, तो आप इसे इस निर्देश की मदद से सेट कर सकते हैं:
gcloud config set project <PROJECT_ID>
कमांड आउटपुट
Updated property [core/project].
3. Cloud Storage में फ़ाइल बनाना
Cloud Shell के लॉन्च होने के बाद, फ़ाइलें बनाना और उन्हें Cloud Storage में ट्रांसफ़र करना शुरू किया जा सकता है.
my-file.txt
नाम की फ़ाइल बनाएं:
$ echo "Hello World from GCS" > my-file.txt
इसके बाद, Cloud Storage में एक नया यूनीक बकेट बनाएं और gsutil
का इस्तेमाल करके, फ़ाइल को वहां ट्रांसफ़र करें.
$ BUCKET=spring-bucket-$USER $ gsutil makebucket gs://$BUCKET $ gsutil copy my-file.txt gs://$BUCKET
Cloud Storage में स्टोरेज ब्राउज़र पर जाएं. इसके बाद, पुष्टि करें कि बकेट और फ़ाइल वहां मौजूद हैं.
4. Spring बूट ऐप्लिकेशन शुरू करना
Spring Initializr वाला नया Spring बूट ऐप्लिकेशन जनरेट करने के लिए, कमांड लाइन का इस्तेमाल करके ऐप्लिकेशन लिखना शुरू करें:
$ curl https://start.spring.io/starter.tgz \ -d type=maven-project \ -d dependencies=web,cloud-gcp-storage -d baseDir=spring-gcs | tar -xzvf -
ध्यान दें कि टेंप्लेट ऐप्लिकेशन के pom.xml
में, Initializr आपकी डिपेंडेंसी में spring-boot-starter-web
और spring-cloud-gcp-starter-storage
अपने-आप जोड़ देता है.
टेंप्लेट ऐप्लिकेशन की डायरेक्ट्री में बदलें:
$ cd spring-gcs
पक्का करें कि JAVA_HOME
को JDK के सही वर्शन पर सेट किया गया हो:
$ export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64/
Maven का इस्तेमाल करके ऐप्लिकेशन बनाएं और चलाएं.
$ ./mvnw spring-boot:run
ऐप्लिकेशन पोर्ट 8080 पर सुनना शुरू कर देगा. नया Cloud Shell टैब खोलें और ऐप्लिकेशन को ऐक्सेस करने के लिए curl
चलाएं.
$ curl localhost:8080
आपको 404 कोड वाली गड़बड़ी मिलेगी, क्योंकि ऐप्लिकेशन ने अभी तक कुछ भी काम का नहीं किया है.
ऐप्लिकेशन के पिछले Cloud Shell टैब पर वापस जाएं और उसे Control+C
(Macintosh पर Command+C
) की मदद से बंद करें.
5. Cloud Storage में मौजूद फ़ाइल को पढ़ना
my-file.txt
को ऐक्सेस करने के लिए Spring बूट ऐप्लिकेशन में बदलाव करें. यह ऐसी फ़ाइल है जिसे आपने Cloud Storage में पहले सेव किया था. आपका लक्ष्य सिर्फ़ एचटीटीपी के ज़रिए फ़ाइल का कॉन्टेंट लौटाना है.
नीचे दिए गए निर्देशों में, आपको फ़ाइलों में बदलाव करने के लिए Vim का इस्तेमाल करना होगा, लेकिन आप Emacs, GNU Nano या Cloud Shell में पहले से मौजूद कोड एडिटर का भी इस्तेमाल कर सकते हैं:
$ cd ~/spring-gcs
ऐप्लिकेशन में REST कंट्रोलर GcsController
जोड़ें.
$ vi src/main/java/com/example/demo/GcsController.java
नीचे दिया गया कोड चिपकाएं और पहले बनाए गए बकेट के साथ संसाधन यूआरआई को ठीक करना न भूलें. echo $BUCKET
कमांड चलाकर, बकेट की जांच की जा सकती है.
src/main/java/com/example/demo/GcsController.java
package com.example.demo;
import java.io.IOException;
import java.nio.charset.Charset;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.core.io.Resource;
import org.springframework.util.StreamUtils;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class GcsController {
@Value("gs://REPLACE_WITH_YOUR_BUCKET/my-file.txt")
private Resource gcsFile;
@GetMapping("/")
public String readGcsFile() throws IOException {
return StreamUtils.copyToString(
gcsFile.getInputStream(),
Charset.defaultCharset());
}
}
Maven की मदद से ऐप्लिकेशन बनाएं और चलाएं:
$ ./mvnw spring-boot:run
ऐप्लिकेशन, पोर्ट 8080 पर सुनना शुरू करता है. नया Cloud Shell टैब खोलें और ऐप्लिकेशन को ऐक्सेस करने के लिए curl
चलाएं.
$ curl localhost:8080
अब आपको ऐप्लिकेशन से लौटाया गया फ़ाइल का कॉन्टेंट दिखेगा. ऐप्लिकेशन के पिछले Cloud Shell टैब पर जाएं और उसे Control+C
(Macintosh पर Command+C
) की मदद से बंद करें.
6. Cloud Storage में मौजूद फ़ाइल में लिखना
आपने Cloud Storage में फ़ाइल का कॉन्टेंट पढ़ा है और Spring REST कंट्रोलर की मदद से उसे बिना अनुमति के सार्वजनिक किया है. अब फ़ाइल का कॉन्टेंट बदलने के लिए, फ़ाइल का नया कॉन्टेंट उसी एचटीटीपी एंडपॉइंट पर पोस्ट करें.
आपको GcsController
में एक और तरीका जोड़ना होगा जो एचटीटीपी पीओएसटी का जवाब देगा और Cloud Storage में आपकी फ़ाइल में डेटा लिखेगा. इस बार, Resource
के स्प्रिंग सीज़न को WritableResource
पर कास्ट करें.
अपनी ज़रूरत के हिसाब से इंपोर्ट करके, GcsController
को अपडेट करें.
src/main/java/com/example/demo/GcsController.java
import java.io.OutputStream;
import org.springframework.core.io.WritableResource;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.PostMapping;
कंट्रोलर में एंडपॉइंट का नया तरीका जोड़ें.
src/main/java/com/example/demo/GcsController.java
@RestController
public class GcsController {
@PostMapping("/")
String writeGcs(@RequestBody String data) throws IOException {
try (OutputStream os = ((WritableResource) gcsFile).getOutputStream()) {
os.write(data.getBytes());
}
return "file was updated\n";
}
...
}
Maven की मदद से ऐप्लिकेशन बनाएं और चलाएं:
$ ./mvnw spring-boot:run
ऐप्लिकेशन, पोर्ट 8080 पर सुनना शुरू करता है. नया Cloud Shell टैब खोलें और curl
चलाकर ऐप्लिकेशन में मैसेज पोस्ट करें.
$ curl -d 'new message' -H 'Content-Type: text/plain' localhost:8080
आपको फ़ाइल का कॉन्टेंट अपडेट होने की पुष्टि का मैसेज दिखेगा. हालांकि, GET
करके इसकी पुष्टि करें.
$ curl localhost:8080
आपको ऐप्लिकेशन से वापस की गई फ़ाइल का अपडेट किया गया कॉन्टेंट दिखेगा. ऐप्लिकेशन के पिछले Cloud Shell टैब पर वापस जाएं और उसे Control+C
(Macintosh पर Command+C
) की मदद से बंद करें.
7. बधाई हो!
आपने Cloud Storage में फ़ाइलों को आसानी से ऐक्सेस करने के लिए, स्प्रिंग रिसॉर्स ऐब्स्ट्रैक्ट का इस्तेमाल करना सीख लिया है. आपने Spring बूट वेब ऐप्लिकेशन लिखा है, जो Cloud Storage में मौजूद फ़ाइल को पढ़ सकता है और उसमें लिख सकता है. आपने Cloud Storage के लिए Spring बूट स्टार्टर के बारे में भी जाना है. यह स्टार्टर, इस तरह की सुविधाओं को चालू करता है.
ज़्यादा जानें
- क्लाउड स्टोरेज
- Google Cloud पर वसंत के समय का फ़्रेमवर्क
- वसंत में Google Cloud GitHub रिपॉज़िटरी (डेटा स्टोर करने की जगह)
- Google Cloud पर Java
लाइसेंस
इस काम को क्रिएटिव कॉमंस एट्रिब्यूशन 2.0 जेनरिक लाइसेंस के तहत लाइसेंस मिला है.