Spring Boot - คุณสมบัติการใช้งาน
คุณสมบัติของแอปพลิเคชันสนับสนุนให้เราทำงานในสภาพแวดล้อมที่แตกต่างกัน ในบทนี้คุณจะได้เรียนรู้วิธีกำหนดค่าและระบุคุณสมบัติของแอปพลิเคชัน Spring Boot
คุณสมบัติบรรทัดคำสั่ง
แอ็พพลิเคชัน Spring Boot แปลงคุณสมบัติบรรทัดคำสั่งเป็นคุณสมบัติ Spring Boot Environment คุณสมบัติบรรทัดคำสั่งมีความสำคัญเหนือกว่าแหล่งคุณสมบัติอื่น ๆ ตามค่าเริ่มต้น Spring Boot จะใช้หมายเลขพอร์ต 8080 เพื่อเริ่ม Tomcat ให้เราเรียนรู้วิธีเปลี่ยนหมายเลขพอร์ตโดยใช้คุณสมบัติบรรทัดคำสั่ง
Step 1 - หลังจากสร้างไฟล์ JAR ที่เรียกใช้งานได้แล้วให้รันโดยใช้คำสั่ง java –jar <JARFILE>.
Step 2 - ใช้คำสั่งที่กำหนดในภาพหน้าจอด้านล่างเพื่อเปลี่ยนหมายเลขพอร์ตสำหรับแอปพลิเคชัน Spring Boot โดยใช้คุณสมบัติบรรทัดคำสั่ง
Note - คุณสามารถระบุคุณสมบัติของแอปพลิเคชันได้มากกว่าหนึ่งรายการโดยใช้ตัวคั่น -
ไฟล์คุณสมบัติ
ไฟล์คุณสมบัติใช้เพื่อเก็บจำนวนคุณสมบัติ 'N' ไว้ในไฟล์เดียวเพื่อเรียกใช้แอปพลิเคชันในสภาพแวดล้อมที่แตกต่างกัน ใน Spring Boot คุณสมบัติจะถูกเก็บไว้ในไฟล์application.properties ไฟล์ภายใต้ classpath
ไฟล์ application.properties อยู่ในไฟล์ src/main/resourcesไดเรกทอรี รหัสสำหรับตัวอย่างapplication.properties ไฟล์ได้รับด้านล่าง -
server.port = 9090
spring.application.name = demoservice
โปรดทราบว่าในโค้ดที่แสดงด้านบนบริการสาธิตแอปพลิเคชัน Spring Boot เริ่มต้นที่พอร์ต 9090
ไฟล์ YAML
Spring Boot รองรับการกำหนดค่าคุณสมบัติตาม YAML เพื่อเรียกใช้แอปพลิเคชัน แทนapplication.properties, เราสามารถใช้ application.ymlไฟล์. ไฟล์ YAML นี้ควรถูกเก็บไว้ใน classpath ตัวอย่างapplication.yml ไฟล์ได้รับด้านล่าง -
spring:
application:
name: demoservice
server:
port: 9090
คุณสมบัติภายนอก
แทนที่จะเก็บไฟล์คุณสมบัติไว้ภายใต้ classpath เราสามารถเก็บคุณสมบัติไว้ในตำแหน่งหรือเส้นทางอื่นได้ ขณะรันไฟล์ JAR เราสามารถระบุพา ธ ไฟล์คุณสมบัติ คุณสามารถใช้คำสั่งต่อไปนี้เพื่อระบุตำแหน่งของไฟล์คุณสมบัติขณะรัน JAR -
-Dspring.config.location = C:\application.properties
การใช้ @Value Annotation
คำอธิบายประกอบ @Value ใช้เพื่ออ่านค่าคุณสมบัติของสภาวะแวดล้อมหรือแอ็พพลิเคชันในโค้ด Java ไวยากรณ์ในการอ่านค่าคุณสมบัติแสดงอยู่ด้านล่าง -
@Value("${property_key_name}")
ดูตัวอย่างต่อไปนี้ที่แสดงไวยากรณ์ที่จะอ่าน spring.application.name ค่าคุณสมบัติในตัวแปร Java โดยใช้คำอธิบายประกอบ @Value
@Value("${spring.application.name}")
สังเกตรหัสที่ระบุด้านล่างเพื่อความเข้าใจที่ดีขึ้น -
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@SpringBootApplication
@RestController
public class DemoApplication {
@Value("${spring.application.name}")
private String name;
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
@RequestMapping(value = "/")
public String name() {
return name;
}
}
Note - หากไม่พบคุณสมบัติขณะรันแอปพลิเคชัน Spring Boot จะโยนข้อยกเว้น Illegal Argument เป็น Could not resolve placeholder 'spring.application.name' in value "${spring.application.name}".
ในการแก้ไขปัญหาตัวยึดตำแหน่งเราสามารถตั้งค่าเริ่มต้นสำหรับคุณสมบัติโดยใช้ไวยากรณ์ thr ที่ระบุด้านล่าง -
@Value("${property_key_name:default_value}")
@Value("${spring.application.name:demoservice}")
โปรไฟล์ Spring Boot Active
Spring Boot รองรับคุณสมบัติต่างๆตามโปรไฟล์ที่ใช้งาน Spring ตัวอย่างเช่นเราสามารถเก็บไฟล์สองไฟล์แยกกันสำหรับการพัฒนาและการผลิตเพื่อเรียกใช้แอปพลิเคชัน Spring Boot
Spring โปรไฟล์ที่ใช้งานอยู่ใน application.properties
ให้เราเข้าใจวิธีการมี Spring active profile ใน application.properties โดยค่าเริ่มต้นแอปพลิเคชัน คุณสมบัติจะถูกใช้เพื่อเรียกใช้แอปพลิเคชัน Spring Boot หากคุณต้องการใช้คุณสมบัติตามโปรไฟล์เราสามารถเก็บไฟล์คุณสมบัติแยกกันสำหรับแต่ละโปรไฟล์ดังที่แสดงด้านล่าง -
application.properties
server.port = 8080
spring.application.name = demoservice
application-dev.properties
server.port = 9090
spring.application.name = demoservice
application-prod.properties
server.port = 4431
spring.application.name = demoservice
ในขณะที่รันไฟล์ JAR เราจำเป็นต้องระบุ spring active profile ตามแต่ละไฟล์คุณสมบัติ โดยดีฟอลต์แอ็พพลิเคชัน Spring Boot ใช้ไฟล์ application.properties คำสั่งในการตั้งค่าโปรไฟล์ที่ใช้งานสปริงแสดงอยู่ด้านล่าง -
คุณสามารถดูชื่อโปรไฟล์ที่ใช้งานได้ในบันทึกของคอนโซลดังที่แสดงด้านล่าง -
2017-11-26 08:13:16.322 INFO 14028 --- [
main] com.tutorialspoint.demo.DemoApplication :
The following profiles are active: dev
ตอนนี้ Tomcat ได้เริ่มต้นบนพอร์ต 9090 (http) ดังที่แสดงด้านล่าง -
2017-11-26 08:13:20.185 INFO 14028 --- [
main] s.b.c.e.t.TomcatEmbeddedServletContainer :
Tomcat started on port(s): 9090 (http)
คุณสามารถตั้งค่าโปรไฟล์ที่ใช้งานการผลิตได้ดังที่แสดงด้านล่าง -
คุณสามารถดูชื่อโปรไฟล์ที่ใช้งานได้ในบันทึกของคอนโซลดังที่แสดงด้านล่าง -
2017-11-26 08:13:16.322 INFO 14028 --- [
main] com.tutorialspoint.demo.DemoApplication :
The following profiles are active: prod
ตอนนี้ Tomcat เริ่มต้นที่พอร์ต 4431 (http) ดังที่แสดงด้านล่าง -
2017-11-26 08:13:20.185 INFO 14028 --- [
main] s.b.c.e.t.TomcatEmbeddedServletContainer :
Tomcat started on port(s): 4431 (http)
Spring active profile สำหรับ application.yml
ให้เราเข้าใจวิธีการเก็บ Spring active profile สำหรับ application.yml เราสามารถเก็บคุณสมบัติ Spring active profile ไว้ใน singleapplication.ymlไฟล์. ไม่จำเป็นต้องใช้ไฟล์แยกต่างหากเช่น application.properties
ต่อไปนี้เป็นโค้ดตัวอย่างสำหรับเก็บ Spring active profiles ไว้ในไฟล์ application.yml โปรดสังเกตว่าตัวคั่น (---) ใช้เพื่อแยกแต่ละโปรไฟล์ในไฟล์ application.yml
spring:
application:
name: demoservice
server:
port: 8080
---
spring:
profiles: dev
application:
name: demoservice
server:
port: 9090
---
spring:
profiles: prod
application:
name: demoservice
server:
port: 4431
คำสั่งเพื่อตั้งค่าโปรไฟล์ที่ใช้งานการพัฒนาได้รับด้านล่าง -
คุณสามารถดูชื่อโปรไฟล์ที่ใช้งานได้ในบันทึกของคอนโซลดังที่แสดงด้านล่าง -
2017-11-26 08:41:37.202 INFO 14104 --- [
main] com.tutorialspoint.demo.DemoApplication :
The following profiles are active: dev
ตอนนี้ Tomcat เริ่มต้นที่พอร์ต 9090 (http) ดังที่แสดงด้านล่าง -
2017-11-26 08:41:46.650 INFO 14104 --- [
main] s.b.c.e.t.TomcatEmbeddedServletContainer :
Tomcat started on port(s): 9090 (http)
คำสั่งในการตั้งค่าโปรไฟล์ที่ใช้งานการผลิตได้รับด้านล่าง -
คุณสามารถดูชื่อโปรไฟล์ที่ใช้งานได้ในบันทึกของคอนโซลดังที่แสดงด้านล่าง -
2017-11-26 08:43:10.743 INFO 13400 --- [
main] com.tutorialspoint.demo.DemoApplication :
The following profiles are active: prod
สิ่งนี้จะเริ่ม Tomcat บนพอร์ต 4431 (http) ดังที่แสดงด้านล่าง:
2017-11-26 08:43:14.473 INFO 13400 --- [
main] s.b.c.e.t.TomcatEmbeddedServletContainer :
Tomcat started on port(s): 4431 (http)