การจัดหาทรัพยากรคงที่เริ่มต้น
Springboot มีไดเรกทอรีทรัพยากรคงที่เริ่มต้นหลายอย่างซึ่งสามารถกำหนดค่าได้เช่นกัน การกำหนดค่าเริ่มต้น /** แผนที่เป็น /คงที่ (หรือ /สาธารณะ, /ทรัพยากร, /meta-inf /ทรัพยากร) และวิธีการกำหนดค่าที่กำหนดเองมีดังนี้:
Spring.mvc.static-path-pattern =/** รูปแบบเส้นทางที่ใช้สำหรับทรัพยากรคงที่
หากส่วนหน้าจำเป็นต้องเข้าถึงทรัพยากรคงที่เริ่มต้นโปรดให้ความสนใจกับโครงสร้างไดเรกทอรีต่อไปนี้:
└─Resources│ application.yml │├├├├├├│├├├├├├├├│││││││└└││││
จะอ้างอิงทรัพยากรคงที่ข้างต้นใน index.html ได้อย่างไร?
วิธีการเขียนต่อไปนี้:
<link rel = "stylesheet" type = "text/css" href = "/css/index.css" rel = "nofollow ภายนอก"> <script type = "text/javascript" src = "/js/index.js"> </script>
หมายเหตุ: การกำหนดค่าเริ่มต้น /** แผนที่ถึง /คงที่ (หรือ /สาธารณะ, /ทรัพยากร, /meta-inf /ทรัพยากร)
เมื่อร้องขอ /css/index.css สปริง MVC จะพบได้ใน /ไดเรกทอรี /แบบคงที่
หากกำหนดค่าเป็น /static/css/index.css ดังนั้นจึงไม่มีไดเรกทอรี /คงที่ภายใต้ไดเรกทอรีหลายตัวที่กำหนดค่าไว้ข้างต้นดังนั้นไฟล์ทรัพยากรจะไม่พบ!
ดังนั้นเมื่อเขียนตำแหน่งทรัพยากรคงที่อย่านำชื่อไดเรกทอรีที่แมป (เช่น/คงที่/,/สาธารณะ/,/,/,/meta-inf/resources/)!
ทรัพยากรคงที่แบบกำหนดเอง
ข้อมูลออนไลน์บอกว่าข้อมูลจำเพาะสามารถกำหนดไว้ในไฟล์การกำหนดค่า ฉันไม่ได้ใช้วิธีนี้ ฉันใช้มันโดยใช้การกำหนดค่าเพิ่มเติม
PS: อธิบายว่าในรุ่น Springboot 1.x การกำหนดค่าบางอย่างที่เกี่ยวข้องกับ Spring MVC นั้นขยายออกไปโดยการสืบทอด WebMVCautoconfiguration แต่ในรุ่น 2.x อินเตอร์เฟส webmvcconfigurer จะถูกนำไปใช้โดยตรงเพื่อขยายการกำหนดค่าสปริง บทความครอบคลุมวิธีการเริ่มต้นเช่นภายใน
เพียงอัปโหลดรหัส:
@ConfigurationPublic คลาส MyWebAppConfigurer ใช้ webMvCconFigurer {// event.share.image.dir =/data/share/image/@value ("$ {event.share.image.dir}") สตริงส่วนตัว @Override โมฆะสาธารณะ addResourceHandlers (ResourceHandlerRegistry Registry) {registry.addresourceHandler ("/share/image/**"). addResourceLocations ("ไฟล์:"+outputDir); -หมายเหตุ: พื้นหลังของรหัสด้านบนเป็นภาพที่นำมาจากสถานที่อื่นแบบไดนามิก มันจะต้องไม่ถูกวางไว้ในแพ็คเกจ Jar Sringboot ดังนั้นผ่านการกำหนดค่าข้างต้นคุณสามารถเข้าถึงภาพโดยตรงใน /data/share/image/a.jpg ผ่าน http: //host/share/image/a.jpg หากไฟล์ทรัพยากรคงที่ไม่ใช่แบบไดนามิกมันก็อยู่ในไดเรกทอรีทรัพยากรเพียงแค่ต้องเขียนมันเช่นนี้:
registry.addresourceHandler ("/share/image/**"). addResourceLocations ("classpath:"+outputDir); // เปลี่ยนไฟล์เป็น classpathการเข้าถึงทรัพยากรคงที่ผ่านคลาสเครื่องมือ Springboot
ง่ายมากรหัสมีดังนี้:
สตริงสุดท้ายคงที่ส่วนตัว background_image = "share/background.jpg"; ไฟล์ไฟล์ = ใหม่ classPathResource (background_image) .getFile (); inputStream คือ = ใหม่ classPathResource (background_image) .getInputStream ();
ปรากฎว่ามีวิธีอื่นในการเขียน:
สตริงสุดท้ายคงที่ private String background_image = "classpath: share/background.jpg"; ไฟล์ file = resourceutils.getFile (background_image);
แต่ในเวอร์ชัน 2.x ต่อไปนี้อาจปรากฏขึ้น แต่ข้อยกเว้น
java.io.filenotfoundException: ทรัพยากรพา ธ คลาส [share/background.jpg] ไม่สามารถแก้ไขได้เป็นเส้นทางไฟล์สัมบูรณ์เพราะมันไม่ได้อยู่ในระบบไฟล์: jar: ไฟล์: /home/ubuntu/wxcs/calendar-api-1.0.0.jar!/boot-inf/classes!
ฉันอยากจะแนะนำวิธีแรกในการเขียน