หากพารามิเตอร์บางอย่างในโครงการจำเป็นต้องได้รับการแก้ไขบ่อยครั้งหรืออาจจำเป็นต้องแก้ไขในภายหลังคุณควรใส่พารามิเตอร์เหล่านี้ลงในไฟล์คุณสมบัติและอ่านการกำหนดค่าในคุณสมบัติในซอร์สโค้ด ด้วยวิธีนี้เฉพาะไฟล์คุณสมบัติเท่านั้นที่จะต้องได้รับการแก้ไขในภายหลังและไม่จำเป็นต้องแก้ไขซอร์สโค้ดซึ่งสะดวกกว่า สิ่งนี้สามารถทำได้ในฤดูใบไม้ผลิและฤดูใบไม้ผลิมีสองวิธีในการโหลดไฟล์คุณสมบัติ: ขึ้นอยู่กับวิธี XML และใช้วิธีการอธิบายประกอบ ต่อไปนี้เป็นสองวิธี
1. โหลดคุณสมบัติคุณสมบัติผ่าน XML
ลองใช้ DataSource ในสปริงในสปริงเป็นตัวอย่าง โดยทั่วไปเรากำหนดค่าต่อไปนี้ในไฟล์ beans.xml:
<!-com.mchange.v2.c3p0.combopooledDataSource คลาสอยู่ในแพ็คเกจ com.mchange.v2.c3p0 ของ c3p0-0.9.5.1.jar แพ็คเกจ-> <bean id = "dataSource"> value = "jdbc: mysql: // localhost: 3306/shop"/> <property name = "user" value = "root"/> <property name = "รหัสผ่าน" value = "root"/> </ebean>
ตอนนี้ถ้าเราต้องการเปลี่ยนแหล่งข้อมูลเราต้องแก้ไขรหัสแหล่งที่มาเหล่านี้ แต่ถ้าเราใช้ไฟล์คุณสมบัติเราจำเป็นต้องแก้ไขซอร์สโค้ดเท่านั้นและเราไม่สนใจเกี่ยวกับซอร์สโค้ด แล้วจะทำอย่างไร?
มี <context:property-placeholder location=""/> แท็กในฤดูใบไม้ผลิซึ่งสามารถใช้ในการโหลดไฟล์การกำหนดค่าคุณสมบัติ ตำแหน่งคือเส้นทางไปยังไฟล์การกำหนดค่า ตอนนี้เราสร้างไฟล์ conn.properties ใหม่ภายใต้ SRC ของไดเรกทอรีโครงการและเขียนการกำหนดค่าข้อมูลด้านบน:
dataSource = com.mchange.v2.c3p0.combopooledDataSource driverclass = com.mysql.jdbc.driver jdbcurl = jdbc/: mysql // // localhost/: 3306/shop user
ตอนนี้คุณต้องทำการปรับเปลี่ยนต่อไปนี้ใน beans.xml:
<บริบท: สถานที่ตั้งสถานที่ตั้งตำแหน่ง = "classpath: conn.properties"/> <!-การโหลดไฟล์การกำหนดค่า-> <!-com.mchange.v2.c3p0.combopooledDataSource คลาสอยู่ใน com.mchange.v2.c3p0 confignce ใน com.mchange.v2.c3p0 conn.properties ที่ startup -> <property name = "driverclass" value = "$ {driverclass}" /> <property name = "jdbcurl" value = "$ {jdbcurl}" /> <property name = "jdbcurl" value = "$ {jdbcurl}" value = "$ {รหัสผ่าน}"/> </ebean> <บริบท: สถานที่ตั้งของผู้ถือครองตำแหน่ง = ""/> แท็กสามารถถูกแทนที่ด้วยแท็ก <bean> ต่อไปนี้ เราคุ้นเคยกับแท็ก <ebean> มากขึ้นและสามารถอ่านได้มากขึ้น: <!-เทียบเท่ากับการกำหนดค่าข้างต้นสิ่งต่อไปนี้จะเข้าใจได้ง่ายขึ้น-> <bean> <ชื่อคุณสมบัติ = "สถานที่"> <! </porement> </ebean> แม้ว่ามันจะดูเหมือนจะกระชับเท่า <context:property-placeholder location=""/> แต่ก็ชัดเจนขึ้น ขอแนะนำให้ใช้สิ่งต่อไปนี้ อย่างไรก็ตามสิ่งนี้ จำกัด อยู่ที่ XML นั่นคือใช้ ${key} เพื่อรับค่าในไฟล์การกำหนดค่าใน beans.xml
2. โหลดคุณสมบัติคุณสมบัติผ่านคำอธิบายประกอบ
อีกวิธีหนึ่งคือการใช้คำอธิบายประกอบ @Value เพื่อโหลดค่าในไฟล์กำหนดค่าผ่านคำอธิบายประกอบ
ลองมาดูตัวอย่าง: หากเราต้องการให้เส้นทางที่แน่นอนไปยังไฟล์บางไฟล์ในโปรแกรมเราจะคิดว่าเราไม่สามารถเขียนมันตายในโปรแกรมได้เรายังสามารถถอนการติดตั้งไฟล์คุณสมบัติ หรือสร้างไฟล์ public.properties ใหม่ในไดเรกทอรี SRC โดยสมมติว่ามีการเขียนบันทึกไว้ในนั้น:
filepath = e/: //web//apache-tomcat-8.0.26//webapps//e_shop//image
หากคุณต้องการรับ filepath นี้ผ่านคำอธิบายประกอบในรหัส Java คุณต้องกำหนดค่าวิธีการเพิ่มความคิดเห็นในไฟล์ beans.xml ก่อน:
<!-วิธีที่สองคือการใช้การฉีดคำอธิบายประกอบซึ่งส่วนใหญ่ใช้ในรหัส Java เพื่อฉีดค่าที่สอดคล้องกันในไฟล์คุณสมบัติโดยใช้คำอธิบายประกอบ-> <bean id = "prop"> <property name = "ตำแหน่ง"> <!-นี่คือคลาส PropertiesFactoryBean นอกจากนี้ยังมีคุณสมบัติสถานที่และยังได้รับอาร์เรย์เช่นเดียวกับ <rray> <value> classpath: public.properties </alues> </erray> </property> </ebean>
ตอนนี้เราสามารถใช้คำอธิบายประกอบในรหัส Java เพื่อรับค่าของ FilePath:
@component ("fileupload") คลาสสาธารณะ FilePloadutil ใช้ fileupload {สตริงส่วนตัว filepath; @value ("#{prop.filepath}") //@value หมายถึงการค้นหาถั่วด้วย id = "prop" ในไฟล์ beans.xml มันอ่านไฟล์กำหนดค่าคุณสมบัติผ่านคำอธิบายประกอบจากนั้นอ่านค่าค่าที่สอดคล้องกันของ key = filePath ในไฟล์การกำหนดค่าที่สอดคล้องกันโมฆะ setFilePath (String filePath) {System.out.println (FilePath); this.filepath = filePath; -โปรดทราบว่าจะต้องมีวิธีการตั้งค่าที่จะฉีดและคำอธิบายประกอบสามารถเขียนบนวิธีการตั้งค่า ในวิธี SetFilePath นั้น FilePath จะถูกพิมพ์ผ่านคอนโซลเพื่อสังเกตว่าคอนโซลมีเอาต์พุตเมื่อเริ่มต้น Tomcat ถ้าเป็นเช่นนั้นหมายความว่าสปริงได้โหลด FilePath เมื่อเริ่มต้น มาดูข้อมูลเริ่มต้นของคอนโซลกันเถอะ:
ข้างต้นเป็นสองวิธีในการกำหนดค่าคุณสมบัติของสปริงโหลด ในความเป็นจริงคลาส PropertyPlaceHolderConfigurer ด้านบนตามวิธี XML และคลาส PropertiesFactoryBean ที่นี่โดยใช้วิธีการอธิบายประกอบทั้งการสืบทอดคุณสมบัติ LoadiLersupport และใช้ในการโหลดไฟล์การกำหนดค่าคุณสมบัติ
สรุป
ข้างต้นเป็นคำอธิบายโดยละเอียดของสองตัวอย่างของไฟล์คุณสมบัติการโหลดสปริงที่แนะนำโดยตัวแก้ไข ฉันหวังว่ามันจะเป็นประโยชน์กับคุณ หากคุณมีคำถามใด ๆ โปรดฝากข้อความถึงฉันและบรรณาธิการจะตอบกลับคุณทันเวลา ขอบคุณมากสำหรับการสนับสนุนเว็บไซต์ Wulin.com!