1. खास जानकारी
Spring Framework, अलग-अलग सोर्स से फ़ाइलों को आसानी से पढ़ने और लिखने के लिए ResourceLoader ऐब्स्ट्रैक्शन उपलब्ध कराता है. जैसे, फ़ाइल सिस्टम, क्लासपाथ या वेब. आपको सिर्फ़, जाने-माने प्रोटोकॉल प्रीफ़िक्स का इस्तेमाल करके, रिसॉर्स के यूआरआई की जानकारी देनी होगी. उदाहरण के लिए, लोकल फ़ाइल सिस्टम पर मौजूद किसी फ़ाइल को ऐक्सेस करने के लिए, आपको file:/data/config.yaml जैसा यूआरआई तय करना होगा.
आपको एक Spring Boot ऐप्लिकेशन लिखना होगा. यह Spring Resource abstraction और gs: प्रोटोकॉल प्रीफ़िक्स का इस्तेमाल करके, Cloud Storage में सेव की गई फ़ाइलों को ऐक्सेस करेगा.
इसके लिए, Cloud Shell और Cloud SDK gcloud कमांड-लाइन टूल का इस्तेमाल करें.
आपको क्या सीखने को मिलेगा
- Cloud Storage Spring Boot starter का इस्तेमाल करने का तरीका
- 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 के नए उपयोगकर्ता, मुफ़्त में आज़माने के लिए 300 डॉलर के प्रोग्राम में शामिल हो सकते हैं.
Cloud Shell
आपको Cloud Shell का इस्तेमाल करना होगा. यह Google Cloud में चलने वाला कमांड-लाइन एनवायरमेंट है.
Cloud Shell चालू करें
- Cloud Console में, Cloud Shell चालू करें
पर क्लिक करें.
अगर आपने Cloud Shell का इस्तेमाल पहले कभी नहीं किया है, तो आपको एक इंटरमीडिएट स्क्रीन दिखेगी. यह स्क्रीन, फ़ोल्ड के नीचे दिखेगी. इसमें Cloud Shell के बारे में जानकारी दी गई होगी. अगर ऐसा है, तो जारी रखें पर क्लिक करें. इसके बाद, आपको यह स्क्रीन कभी नहीं दिखेगी. एक बार दिखने वाली स्क्रीन ऐसी दिखती है:
Cloud Shell से कनेक्ट होने में कुछ ही सेकंड लगेंगे.
इस वर्चुअल मशीन में, डेवलपमेंट के लिए ज़रूरी सभी टूल पहले से मौजूद हैं. यह 5 जीबी की होम डायरेक्ट्री उपलब्ध कराता है और 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 Boot ऐप्लिकेशन को शुरू करना
कमांड लाइन का इस्तेमाल करके, Spring Initializr की मदद से नया Spring Boot ऐप्लिकेशन जनरेट करें और ऐप्लिकेशन लिखना शुरू करें:
$ curl https://start.spring.io/starter.tgz \ -d type=maven-project \ -d dependencies=web,cloud-gcp-storage -d baseDir=spring-gcs | tar -xzvf -
ध्यान दें कि Initializr, टेम्प्लेट ऐप्लिकेशन के pom.xml में आपकी डिपेंडेंसी में 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 में मौजूद फ़ाइल को पढ़ना
Cloud Storage में पहले से सेव की गई फ़ाइल my-file.txt को ऐक्सेस करने के लिए, अपने Spring Boot ऐप्लिकेशन में बदलाव करें. आपका लक्ष्य, एचटीटीपी के ज़रिए फ़ाइल का कॉन्टेंट वापस पाना है.
यहां दिए गए निर्देशों में, फ़ाइलों में बदलाव करने के लिए 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 में एक और तरीका जोड़ना होगा, जो एचटीटीपी POST का जवाब देगा और 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 Resource abstraction का इस्तेमाल करना सीखा. आपने Spring Boot वेब ऐप्लिकेशन लिखा है, जो Cloud Storage में मौजूद किसी फ़ाइल को पढ़ और उसमें बदलाव कर सकता है. आपने Cloud Storage के लिए Spring Boot starter के बारे में भी जाना. यह सुविधा को चालू करता है.
ज़्यादा जानें
- Cloud Storage
- Google Cloud पर Spring Framework
- Google Cloud GitHub रिपॉज़िटरी पर Spring
- Google Cloud पर Java
लाइसेंस
इस काम के लिए, Creative Commons एट्रिब्यूशन 2.0 जेनेरिक लाइसेंस के तहत लाइसेंस मिला है.