Spring Boot - Thuộc tính ứng dụng

Thuộc tính Ứng dụng hỗ trợ chúng ta làm việc trong các môi trường khác nhau. Trong chương này, bạn sẽ học cách cấu hình và chỉ định các thuộc tính cho ứng dụng Spring Boot.

Thuộc tính dòng lệnh

Ứng dụng Spring Boot chuyển đổi các thuộc tính dòng lệnh thành các thuộc tính Spring Boot Environment. Thuộc tính dòng lệnh được ưu tiên hơn các nguồn thuộc tính khác. Theo mặc định, Spring Boot sử dụng số cổng 8080 để khởi động Tomcat. Hãy để chúng tôi tìm hiểu cách thay đổi số cổng bằng cách sử dụng thuộc tính dòng lệnh.

Step 1 - Sau khi tạo một tệp JAR thực thi, hãy chạy nó bằng cách sử dụng lệnh java –jar <JARFILE>.

Step 2 - Sử dụng lệnh trong ảnh chụp màn hình dưới đây để thay đổi số cổng cho ứng dụng Spring Boot bằng cách sử dụng thuộc tính dòng lệnh.

Note - Bạn có thể cung cấp nhiều thuộc tính ứng dụng bằng cách sử dụng dấu phân cách -.

Tệp thuộc tính

Tệp thuộc tính được sử dụng để giữ số thuộc tính 'N' trong một tệp duy nhất để chạy ứng dụng trong một môi trường khác. Trong Spring Boot, các thuộc tính được giữ trongapplication.properties tệp dưới đường dẫn classpath.

Tệp application.properties nằm trong src/main/resourcesdanh mục. Mã cho mẫuapplication.properties tệp được cung cấp bên dưới -

server.port = 9090
spring.application.name = demoservice

Lưu ý rằng trong đoạn mã được hiển thị ở trên, bản trình diễn ứng dụng Spring Boot bắt đầu trên cổng 9090.

Tệp YAML

Spring Boot hỗ trợ các cấu hình thuộc tính dựa trên YAML để chạy ứng dụng. Thay vìapplication.properties, chúng ta có thể sử dụng application.ymltập tin. Tệp YAML này cũng nên được giữ bên trong classpath. Mẫuapplication.yml tệp được cung cấp bên dưới -

spring:
   application:
      name: demoservice
   server:
port: 9090

Thuộc tính bên ngoài

Thay vì giữ tệp thuộc tính trong classpath, chúng ta có thể giữ các thuộc tính ở vị trí hoặc đường dẫn khác. Trong khi chạy tệp JAR, chúng ta có thể chỉ định đường dẫn tệp thuộc tính. Bạn có thể sử dụng lệnh sau để chỉ định vị trí của tệp thuộc tính trong khi chạy JAR:

-Dspring.config.location = C:\application.properties

Sử dụng chú thích @Value

Chú thích @Value được sử dụng để đọc giá trị thuộc tính môi trường hoặc ứng dụng trong mã Java. Cú pháp để đọc giá trị thuộc tính được hiển thị bên dưới:

@Value("${property_key_name}")

Hãy xem ví dụ sau cho thấy cú pháp để đọc spring.application.name giá trị thuộc tính trong biến Java bằng cách sử dụng chú thích @Value.

@Value("${spring.application.name}")

Hãy quan sát đoạn mã dưới đây để hiểu rõ hơn -

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 - Nếu thuộc tính không được tìm thấy trong khi chạy ứng dụng, Spring Boot sẽ ném ngoại lệ Đối số bất hợp pháp dưới dạng Could not resolve placeholder 'spring.application.name' in value "${spring.application.name}".

Để giải quyết vấn đề trình giữ chỗ, chúng tôi có thể đặt giá trị mặc định cho thuộc tính bằng cú pháp thr được cung cấp bên dưới:

@Value("${property_key_name:default_value}")

@Value("${spring.application.name:demoservice}")

Cấu hình hoạt động Spring Boot

Spring Boot hỗ trợ các thuộc tính khác nhau dựa trên cấu hình hoạt động của Spring. Ví dụ: chúng ta có thể giữ hai tệp riêng biệt để phát triển và sản xuất để chạy ứng dụng Spring Boot.

Hồ sơ hoạt động mùa xuân trong application.properties

Hãy để chúng tôi hiểu cách có hồ sơ hoạt động Spring trong application.properties. Theo mặc định, ứng dụng. thuộc tính sẽ được sử dụng để chạy ứng dụng Spring Boot. Nếu bạn muốn sử dụng các thuộc tính dựa trên cấu hình, chúng tôi có thể giữ tệp thuộc tính riêng biệt cho từng cấu hình như hình dưới đây

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

Trong khi chạy tệp JAR, chúng ta cần chỉ định cấu hình hoạt động mùa xuân dựa trên mỗi tệp thuộc tính. Theo mặc định, ứng dụng Spring Boot sử dụng tệp application.properties. Lệnh thiết lập cấu hình hoạt động của lò xo được hiển thị bên dưới:

Bạn có thể thấy tên hồ sơ hoạt động trên nhật ký bảng điều khiển như hình dưới đây -

2017-11-26 08:13:16.322  INFO 14028 --- [           
   main] com.tutorialspoint.demo.DemoApplication  :
   The following profiles are active: dev

Bây giờ, Tomcat đã bắt đầu trên cổng 9090 (http) như hình dưới đây -

2017-11-26 08:13:20.185  INFO 14028 --- [           
   main] s.b.c.e.t.TomcatEmbeddedServletContainer : 
   Tomcat started on port(s): 9090 (http)

Bạn có thể đặt cấu hình hoạt động Sản xuất như hình dưới đây -

Bạn có thể thấy tên hồ sơ hoạt động trên nhật ký bảng điều khiển như hình dưới đây -

2017-11-26 08:13:16.322  INFO 14028 --- [           
   main] com.tutorialspoint.demo.DemoApplication  :
   The following profiles are active: prod

Bây giờ, Tomcat đã bắt đầu trên cổng 4431 (http) như hình dưới đây -

2017-11-26 08:13:20.185  INFO 14028 --- [          
   main] s.b.c.e.t.TomcatEmbeddedServletContainer :
   Tomcat started on port(s): 4431 (http)

Hồ sơ hoạt động mùa xuân cho application.yml

Hãy để chúng tôi hiểu cách giữ cho hồ sơ Spring hoạt động cho application.yml. Chúng tôi có thể giữ các thuộc tính hồ sơ hoạt động Spring trong đơnapplication.ymltập tin. Không cần sử dụng tệp riêng biệt như application.properties.

Sau đây là mã ví dụ để giữ các cấu hình Spring hoạt động trong tệp application.yml. Lưu ý rằng dấu phân cách (---) được sử dụng để tách từng hồ sơ trong tệp 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

Lệnh để thiết lập cấu hình hoạt động phát triển được đưa ra dưới đây:

Bạn có thể thấy tên hồ sơ hoạt động trên nhật ký bảng điều khiển như hình dưới đây -

2017-11-26 08:41:37.202  INFO 14104 --- [           
   main] com.tutorialspoint.demo.DemoApplication  : 
   The following profiles are active: dev

Bây giờ, Tomcat đã bắt đầu trên cổng 9090 (http) như hình dưới đây -

2017-11-26 08:41:46.650  INFO 14104 --- [           
   main] s.b.c.e.t.TomcatEmbeddedServletContainer : 
   Tomcat started on port(s): 9090 (http)

Lệnh thiết lập cấu hình hoạt động Sản xuất được đưa ra dưới đây:

Bạn có thể thấy tên hồ sơ hoạt động trên nhật ký bảng điều khiển như hình dưới đây -

2017-11-26 08:43:10.743  INFO 13400 --- [    
   main] com.tutorialspoint.demo.DemoApplication  : 
   The following profiles are active: prod

Thao tác này sẽ khởi động Tomcat trên cổng 4431 (http) như hình dưới đây:

2017-11-26 08:43:14.473  INFO 13400 --- [     
   main] s.b.c.e.t.TomcatEmbeddedServletContainer : 
   Tomcat started on port(s): 4431 (http)