- vừa được xem lúc

Sử dụng EnvFile plugins cho IntelliJ một cách hiệu quả

0 0 21

Người đăng: LDT

Theo Viblo Asia

**Bài viết này dành cho các bạn đang sử dụng IntelliJ **

1. Đặt vấn đề

Trong quá trình phát triển các project Java, để có thể truyền biến môi trường, thông thường khi debug chúng ta sẽ phải sửa Runtime Configuration, thêm từng cặp Key-Value vào. image.png

Nếu chúng ta chỉ có 1 vài biến thì sửa rất nhanh, nhưng nếu chúng ta nó nhiều module, mỗi module có mấy chục biến

  • Rất dễ nhầm
  • Tốn thời gian
  • Mỗi lần sửa lại phải báo cả team vào config để sửa.

2. Giải pháp

2.1 Sửa dụng EnvFile Plugins

EnvFile plugins ra đời cho phép chúng ta import cả file chứa tất cả các cặp Key-Value vào. image.png

Sau khi cài xong plugins, restart lại IDE, vào configuration config image.png

Ví dụ: trong applcation.properties có tham số

my.data=${MY_SYSTEM_PROPERTY:default_value}

mình sẽ tạo 1 file en.test.env

MY_DATA=this is my data value

Quá dễ dàng và thuận tiện.

Tuy nhiên, nếu bận nào đã từng có kinh nghiệm về Java thì sẽ thấy có vấn đề: -> Đây là plugin cho IDE, nó sẽ chạy tốt trong môi trường IDE, khi chạy ứng dụng (run .jar file), bằng cách nào đó, chúng ta sẽ phải truyền các giá trị này lúc runtime.

2.2. Run jar file

Chúng ta sẽ phải truyền vào system property.

java -jar -DMY_SYSTEM_PROPERTY=tuan target/*.jar

Cách này khá thủ công, mình chưa tìm được giải pháp nào có thể truyền cả file environment vào. Nếu bạn nào có giải pháp thì comment bên dưới giúp mình. Thông thường mình sẽ dùng docker để chạy. Nó cho phép truyền biến môi trường vào.

2.3. Run docker image with file environment.

Mình sẽ build ra 1 image

mvn clean package && docker build -t java_app .

sau đó run docker image, truyền thêm file biến môi trường vào. Trong ví dụ mình để file biến môi trường ở thư mục ~/Documents/en.test.env

docker run -it --name my_app --env-file ~/Documents/en.test.env java_app

Sau khi run, ta thấy giá trị trong file biến môi trường được load lúc runtime.

 @Value("${my.data}") String myData; @Bean CommandLineRunner commandLineRunner(){ return args -> { System.out.println("myData = " + myData); }; }

khi start ứng dụng

myData = cong hoa xa hoi chu nghia viet nam

2.4. Run with docker-compose

Tạo file docker-compose.yml với nội dung như bên dưới.

version: '3'
services: test: container_name: my_app env_file: - ~/Documents/en.test.env image: java_app

Tương tự bạn có thể chạy với file docker-compose.yml, cách làm tương tự.

2.5 Source code

Toàn bộ source code mình có chia sẻ trên github.

3. Kết luận

Đây là vấn đề cá nhân mình gặp phải, mục đích ghi chú cho bản thân và chia sẻ choi mọi người nếu cần thiết. Nếu cần trao đổi, mọi người hãy bình luận bên dưới. Cảm ơn vì đã đọc bài của mình.

Bình luận

Bài viết tương tự

- vừa được xem lúc

Cài đặt WSL / WSL2 trên Windows 10 để code như trên Ubuntu

Sau vài ba năm mình chuyển qua code trên Ubuntu thì thật không thể phủ nhận rằng mình đã yêu em nó. Cá nhân mình sử dụng Ubuntu để code web thì thật là tuyệt vời.

0 0 396

- vừa được xem lúc

Phần 1: Giới thiệu về Kubernetes

Kubernetes là gì. Trang chủ: https://kubernetes.io/. Ai cần Kubernetes.

0 0 100

- vừa được xem lúc

Docker: Chưa biết gì đến biết dùng (Phần 1- Lịch sử)

1. Vì sao nên sử dụng. . .

0 0 104

- vừa được xem lúc

Docker - những kiến thức cơ bản phần 1

Giới thiệu. Nếu bạn đang làm ở một công ty công nghệ thông tin, chắc rằng bạn đã được nghe nói về Docker.

0 0 78

- vừa được xem lúc

Docker: Chưa biết gì đến biết dùng (Phần 2 - Dockerfile)

1. Mở đầu.

0 0 67

- vừa được xem lúc

Docker: Chưa biết gì đến biết dùng (Phần 3: Docker-compose)

1. Mở đầu. . .

0 0 121