Các thuộc tính của Spring Boot trong Java
Các thuộc tính khác nhau của Spring Boot chỉ được định dạng bên trong file application.properties và định dạng file application.yml hoặc dưới dạng các công tắc dòng lệnh. Danh sách dưới đây sẽ cung cấp các thuộc tính quan trọng của Spring Boot và tham chiếu đến các classes dùng chúng.
Spring Boot là một framework phát triển ứng dụng web trong Java. Nó cung cấp nhiều thuộc tính quan trọng để giúp việc phát triển và triển khai ứng dụng trở nên dễ dàng hơn.
1. Các thuộc tính Core của Spring Boot trong Java
Thuộc tính Core (Cốt lõi) của Spring Boot là những thuộc tính cơ bản được sử dụng để cấu hình các tính năng chính của ứng dụng. Các thuộc tính này có thể được cấu hình trong tệp application.properties hoặc application.yml. Trong phần này, chúng ta sẽ tìm hiểu về một số thuộc tính Core phổ biến trong Spring Boot và cách sử dụng chúng.
spring.application.name: Cấu hình tên ứng dụng. Giá trị mặc định là application.
Bài viết này được đăng tại [free tuts .net]
Ví dụ, để cấu hình tên ứng dụng là MyApp, ta sử dụng thuộc tính sau trong tệp application.properties:
spring.application.name=MyApp
spring.profiles.active: Cấu hình hồ sơ (profile) hoạt động của ứng dụng. Hồ sơ được sử dụng để cấu hình ứng dụng cho môi trường khác nhau.
Ví dụ, để sử dụng profile dev, ta sử dụng thuộc tính sau trong tệp application.properties:
spring.profiles.active=dev
spring.datasource.url, spring.datasource.username, spring.datasource.password: Cấu hình thông tin kết nối cơ sở dữ liệu.
Ví dụ, để kết nối đến cơ sở dữ liệu MySQL trên localhost, ta sử dụng các thuộc tính sau trong tệp application.properties:
spring.datasource.url=jdbc:mysql://localhost:3306/mydatabase spring.datasource.username=root spring.datasource.password=123456
spring.jpa.hibernate.ddl-auto: Cấu hình Hibernate để tạo ra các bảng trong cơ sở dữ liệu. Giá trị mặc định là none.
Ví dụ, để tạo bảng tự động, ta sử dụng thuộc tính sau trong tệp application.properties:
spring.jpa.hibernate.ddl-auto=create.
spring.jpa.show-sql: Cấu hình Hibernate để hiển thị câu lệnh SQL được tạo ra. Giá trị mặc định là false.
Ví dụ, để hiển thị câu lệnh SQL, ta sử dụng thuộc tính sau trong tệp application.properties
spring.jpa.show-sql=true
spring.main.allow-bean-definition-overriding: Cấu hình cho phép ghi đè định nghĩa bean. Giá trị mặc định là false.
Ví dụ, để cho phép ghi đè định nghĩa bean, ta sử dụng thuộc tính sau trong tệp application.properties:
spring.main.allow-bean-definition-overriding=true
spring.messages.basename: Cấu hình tệp nguồn tin nhắn.
Ví dụ, để sử dụng tệp messages.properties, ta sử dụng thuộc tính sau trong tệp application.properties:
spring.messages.basename=messages
spring.resources.static-locations: Cấu hình đường dẫn tới các tài nguyên tĩnh (như CSS, JS, hình ảnh...) trong ứng dụng.
Ví dụ, để cấu hình tài nguyên tĩnh được lưu trữ trong thư mục /static trong thư mục gốc của ứng dụng, ta sử dụng thuộc tính sau trong tệp application.properties:
spring.resources.static-locations=classpath:/static/
spring.jackson.serialization.fail-on-empty-beans: Cấu hình Jackson để không bỏ qua các đối tượng rỗng khi chuyển đổi sang JSON. Giá trị mặc định là true.
Ví dụ, để không bỏ qua các đối tượng rỗng, ta sử dụng thuộc tính sau trong tệp application.properties:
spring.jackson.serialization.fail-on-empty-beans=false
server.port: Cấu hình cổng mà ứng dụng sử dụng để lắng nghe các kết nối. Giá trị mặc định là 8080.
Ví dụ, để sử dụng cổng 9090, ta sử dụng thuộc tính sau trong tệp application.properties:
server.port=9090
spring.datasource.url: Cấu hình địa chỉ URL của cơ sở dữ liệu.
Ví dụ, để sử dụng cơ sở dữ liệu MySQL trên máy cục bộ, ta sử dụng thuộc tính sau trong tệp application.properties:
spring.datasource.url=jdbc:mysql://localhost:3306/mydatabase
spring.datasource.username: Cấu hình tên người dùng để truy cập cơ sở dữ liệu.
Ví dụ, để sử dụng tài khoản người dùng root, ta sử dụng thuộc tính sau trong tệp application.properties:
spring.datasource.username=root
spring.datasource.password: Cấu hình mật khẩu để truy cập cơ sở dữ liệu.
Ví dụ, để sử dụng mật khẩu password, ta sử dụng thuộc tính sau trong tệp application.properties:
spring.datasource.password=password
spring.jpa.hibernate.ddl-auto: Cấu hình hành động của Hibernate khi khởi tạo cơ sở dữ liệu. Giá trị mặc định là none.
Ví dụ, để Hibernate tạo lại cơ sở dữ liệu mỗi khi ứng dụng khởi động, ta sử dụng thuộc tính sau trong tệp application.properties:
spring.jpa.hibernate.ddl-auto=create
spring.jpa.show-sql: Cấu hình hiển thị các lệnh SQL được tạo ra bởi Hibernate. Giá trị mặc định là false.
Ví dụ, để hiển thị các lệnh SQL, ta sử dụng thuộc tính sau trong tệp application.properties:
spring.jpa.show-sql=true
spring.jpa.properties.hibernate.dialect: Cấu hình loại cơ sở dữ liệu mà Hibernate sử dụng.
Ví dụ, để sử dụng MySQL, ta sử dụng thuộc tính sau trong tệp application.properties:
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5Dialect
spring.data.mongodb.uri: Cấu hình địa chỉ URI của cơ sở dữ liệu MongoDB.
Ví dụ, để sử dụng cơ sở dữ liệu MongoDB trên máy cục bộ, ta sử dụng thuộc tính sau trong tệp application.properties:
spring.data.mongodb.uri=mongodb://localhost:27017/mydatabase
spring.data.mongodb.username: Cấu hình tên người dùng để truy cập cơ sở dữ liệu MongoDB.
Ví dụ, để sử dụng tài khoản người dùng root, ta sử dụng thuộc tính sau trong tệp application.properties:
spring.data.mongodb.username=root
Những thuộc tính Core này giúp người dùng có thể tùy chỉnh và cấu hình các tính năng chính của ứng dụng Spring Boot. Bằng cách sử dụng các thuộc tính này, người dùng có thể đạt được hiệu suất và khả năng mở rộng tốt hơn cho ứng dụng của mình.
2. Các thuộc tính Web của Spring Boot trong Java
Thuộc tính Web của Spring Boot cung cấp các thuộc tính để cấu hình tính năng liên quan đến Web, chẳng hạn như cấu hình tài nguyên tĩnh, xử lý lỗi, cấu hình SSL, v.v. Dưới đây là một số thuộc tính Web phổ biến trong Spring Boot:
server.port: Cấu hình cổng mà ứng dụng lắng nghe các yêu cầu từ phía client.
Ví dụ, để cấu hình ứng dụng lắng nghe trên cổng 8080, ta sử dụng thuộc tính sau trong tệp application.properties:
server.port=8080
server.servlet.context-path: Cấu hình đường dẫn URL của ứng dụng.
Ví dụ, để cấu hình ứng dụng sử dụng đường dẫn /myapp, ta sử dụng thuộc tính sau trong tệp application.properties:
server.servlet.context-path=/myapp
spring.resources.static-locations: Cấu hình tài nguyên tĩnh được phục vụ bởi ứng dụng.
Ví dụ, để cấu hình ứng dụng phục vụ các tài nguyên tĩnh từ thư mục /static trong thư mục gốc của ứng dụng, ta sử dụng thuộc tính sau trong tệp application.properties:
spring.resources.static-locations=classpath:/static/
spring.mvc.view.prefix và spring.mvc.view.suffix: Cấu hình tiền tố và hậu tố cho các file View trong ứng dụng.
Ví dụ, để cấu hình ứng dụng sử dụng tiền tố /WEB-INF/views/ và hậu tố .jsp, ta sử dụng các thuộc tính sau trong tệp application.properties:
spring.mvc.view.prefix=/WEB-INF/views/ spring.mvc.view.suffix=.jsp
server.error.whitelabel.enabled: Cấu hình để tắt trang lỗi mặc định do Spring Boot cung cấp.
Ví dụ, để tắt trang lỗi mặc định, ta sử dụng thuộc tính sau trong tệp application.properties:
server.error.whitelabel.enabled=false
server.ssl.key-store và server.ssl.key-store-password: Cấu hình SSL cho ứng dụng.
Ví dụ, để cấu hình SSL, ta sử dụng các thuộc tính sau trong tệp application.properties:
server.ssl.key-store=classpath:keystore.jks server.ssl.key-store-password=changeit
Trong ví dụ trên, ta đã cấu hình SSL sử dụng một keystore có tên là keystore.jks được đặt trong thư mục classpath của ứng dụng và sử dụng mật khẩu changeit để truy cập vào keystore.
spring.servlet.multipart.max-file-size và spring.servlet.multipart.max-request-size: Cấu hình kích thước tối đa của các tệp được tải lên và kích thước tối đa của yêu cầu HTTP.
Ví dụ, để cấu hình kích thước tệp tối đa là 10MB và kích thước yêu cầu tối đa là 20MB, ta sử dụng các thuộc tính sau trong tệp application.properties:
spring.servlet.multipart.max-file-size=10MB spring.servlet.multipart.max-request-size=20MB
spring.servlet.session.timeout: Cấu hình thời gian chờ của phiên HTTP trong ứng dụng (theo đơn vị giây).
Ví dụ, để cấu hình thời gian chờ là 30 phút, ta sử dụng thuộc tính sau trong tệp application.properties:
spring.servlet.session.timeout=1800
spring.servlet.multipart.enabled: Cấu hình xem liệu ứng dụng có hỗ trợ tải lên các tệp hay không.
Ví dụ, để tắt tính năng tải lên tệp, ta sử dụng thuộc tính sau trong tệp application.properties:
spring.servlet.multipart.enabled=false
server.port: Cấu hình cổng mà ứng dụng sẽ chạy trên đó. Giá trị mặc định là 8080.
Ví dụ, để cấu hình ứng dụng chạy trên cổng 9090, ta sử dụng thuộc tính sau trong tệp application.properties:
server.port=9090
server.servlet.context-path: Cấu hình đường dẫn context cho ứng dụng.
Ví dụ, để cấu hình ứng dụng có đường dẫn context là /myapp, ta sử dụng thuộc tính sau trong tệp application.properties:
server.servlet.context-path=/myapp
Khi đó, đường dẫn đầy đủ để truy cập ứng dụng sẽ là http://localhost:8080/myapp.
server.ssl.key-store-type, server.ssl.key-store, server.ssl.key-store-password, server.ssl.key-alias: Cấu hình SSL để bảo vệ giao tiếp giữa máy khách và máy chủ.
Ví dụ, để cấu hình keystore, ta sử dụng các thuộc tính sau trong tệp application.properties:
server.ssl.key-store-type=JKS server.ssl.key-store=classpath:keystore.jks server.ssl.key-store-password=changeit server.ssl.key-alias=mykey
Trong đó, keystore được lưu trữ trong thư mục classpath của ứng dụng và sử dụng mật khẩu changeit để truy cập vào keystore. Thuộc tính server.ssl.key-alias chỉ định tên định danh của chứng chỉ trong keystore.
server.ssl.enabled, server.ssl.client-auth: Cấu hình SSL để yêu cầu xác thực máy khách.
Ví dụ, để yêu cầu xác thực máy khách, ta sử dụng các thuộc tính sau trong tệp application.properties:
server.ssl.enabled=true server.ssl.client-auth=need
3. Các thuộc tính Cache của Spring Boot trong Java
Spring Boot hỗ trợ các framework caching phổ biến như Ehcache, Hazelcast, Infinispan, Redis, v.v. Bạn có thể cấu hình các thuộc tính cache trong tệp application.properties hoặc application.yml.
Dưới đây là một số thuộc tính cache phổ biến của Spring Boot:
- spring.cache.type: Cấu hình loại cache được sử dụng. Giá trị mặc định là none, có nghĩa là cache sẽ không được sử dụng.
Ví dụ, để sử dụng Ehcache làm cache, ta sử dụng thuộc tính sau trong tệp application.properties:
spring.cache.type=ehcache
- spring.cache.cache-names: Cấu hình danh sách các tên cache được sử dụng. Nếu danh sách này không được cung cấp, một cache mặc định có tên là default sẽ được sử dụng.
Ví dụ, để cấu hình hai cache với tên là users và products, ta sử dụng thuộc tính sau trong tệp application.properties:
spring.cache.cache-names=users,products
- spring.cache.ehcache.config: Cấu hình đường dẫn đến tệp cấu hình Ehcache. Nếu thuộc tính này không được cung cấp, một tệp cấu hình mặc định có tên ehcache.xml trong thư mục gốc của ứng dụng sẽ được sử dụng.
Ví dụ, để cấu hình sử dụng tệp my-ehcache.xml, ta sử dụng thuộc tính sau trong tệp application.properties:
spring.cache.ehcache.config=classpath:my-ehcache.xml
- spring.cache.hazelcast.config: Cấu hình đường dẫn đến tệp cấu hình Hazelcast. Nếu thuộc tính này không được cung cấp, một tệp cấu hình mặc định có tên hazelcast.xml trong thư mục gốc của ứng dụng sẽ được sử dụng.
Ví dụ, để cấu hình sử dụng tệp my-hazelcast.xml, ta sử dụng thuộc tính sau trong tệp application.properties:
spring.cache.hazelcast.config=classpath:my-hazelcast.xml
- spring.cache.infinispan.config trong Spring Boot được sử dụng để cấu hình tệp cấu hình Infinispan. Infinispan là một nền tảng phân tán mã nguồn mở được sử dụng để xây dựng các ứng dụng với khả năng mở rộng cao.
Ví dụ:
spring.cache.infinispan.config=classpath:infinispan.xml
Trong đó, classpath:infinispan.xml là đường dẫn đến tệp cấu hình Infinispan. Nếu tệp này không được chỉ định, Spring Boot sẽ sử dụng cấu hình mặc định.
Lưu ý rằng để sử dụng Infinispan như là cơ chế lưu trữ bộ nhớ đệm trong ứng dụng của bạn, bạn cần phải thêm Infinispan như là một phụ thuộc. Ví dụ:
<dependency> <groupId>org.infinispan</groupId> <artifactId>infinispan-spring-boot-starter-embedded</artifactId> </dependency>
Để hiểu rõ hơn về cấu hình EhCache trong Spring Boot thì chúng ta sẽ cùng làm 1 ví dụ như sau:
# application.properties # Cấu hình sử dụng EhCache spring.cache.type=ehcache spring.cache.cache-names=myCache spring.cache.ehcache.config=classpath:/ehcache.xml
Trong đó, ehcache.xml là file cấu hình của EhCache được đặt trong thư mục resources. File này có thể chứa các cấu hình như sau:
<?xml version="1.0" encoding="UTF-8"?> <ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://www.ehcache.org/ehcache.xsd" updateCheck="false" monitoring="autodetect" dynamicConfig="true"> <cache name="myCache" maxEntriesLocalHeap="10000" maxEntriesLocalDisk="1000" eternal="false" timeToIdleSeconds="120" timeToLiveSeconds="120" diskExpiryThreadIntervalSeconds="120" memoryStoreEvictionPolicy="LRU" transactionalMode="off"> </cache> </ehcache>
Trong ví dụ trên, ta định nghĩa một cache với tên là myCache, sử dụng LRU eviction policy và có thời gian sống là 120 giây. Cấu hình này cho phép lưu trữ tối đa 10000 mục trên heap và 1000 mục trên disk. Khi số mục vượt quá giới hạn này, những mục ít được truy cập hơn sẽ bị loại bỏ.
4. Các thuộc tính Data của Spring Boot trong Java
Spring Boot là một framework phát triển ứng dụng Java, cung cấp các thuộc tính Data mạnh mẽ để thao tác với cơ sở dữ liệu. Dưới đây là danh sách các thuộc tính Data của Spring Boot với ví dụ chi tiết:
-
spring.datasource.url: URL kết nối đến cơ sở dữ liệu.
Ví dụ:
spring.datasource.url=jdbc:mysql://localhost:3306/mydatabase
-
spring.datasource.username: Tên đăng nhập để kết nối đến cơ sở dữ liệu.
Ví dụ:
spring.datasource.username=root
-
spring.datasource.password: Mật khẩu để kết nối đến cơ sở dữ liệu.
Ví dụ:
spring.datasource.password=123456
-
spring.datasource.driver-class-name: Tên lớp trình điều khiển JDBC được sử dụng để kết nối đến cơ sở dữ liệu.
Ví dụ:
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
-
spring.jpa.show-sql: Hiển thị các câu lệnh SQL được tạo ra bởi JPA.
Ví dụ:
spring.jpa.show-sql=true
-
spring.jpa.hibernate.ddl-auto: Cấu hình cách thực hiện các lệnh tạo bảng trong Hibernate.
Ví dụ:
spring.jpa.hibernate.ddl-auto=create-drop
-
spring.jpa.properties.hibernate.dialect: Cấu hình dialect Hibernate để sử dụng cho cơ sở dữ liệu cụ thể.
Ví dụ:
spring.jpa.properties.hibernate.dialect=org.hiberndiaate.lect.MySQL5Dialect
-
spring.data.mongodb.host: Địa chỉ máy chủ MongoDB.
Ví dụ:
spring.data.mongodb.host=localhost
-
spring.data.mongodb.port: Cổng kết nối đến máy chủ MongoDB.
Ví dụ:
spring.data.mongodb.port=27017
-
spring.data.mongodb.database: Tên cơ sở dữ liệu MongoDB để sử dụng.
Ví dụ:
spring.data.mongodb.database=mydatabase
Chú ý: Các giá trị ví dụ trên được cung cấp chỉ để minh họa. Bạn cần điều chỉnh các giá trị này để phù hợp với môi trường và cấu hình cụ thể của bạn.
5. Các thuộc tính Security của Spring Boot trong Java
Spring Boot cung cấp rất nhiều thuộc tính Security để quản lý bảo mật ứng dụng Java của bạn. Dưới đây là một số thuộc tính Security phổ biến của Spring Boot và ví dụ minh họa cụ thể:
- spring.security.user.name và spring.security.user.password: Được sử dụng để cấu hình tài khoản đăng nhập mặc định cho ứng dụng.
Ví dụ:
spring.security.user.name=admin spring.security.user.password=123456
- spring.security.user.roles: Được sử dụng để chỉ định vai trò của người dùng đăng nhập mặc định.
Ví dụ:
spring.security.user.roles=admin
- spring.security.oauth2.client.registration: Cấu hình đăng ký các dịch vụ bên thứ ba sử dụng OAuth2.
Ví dụ:
spring.security.oauth2.client.registration.google.client-id=xxx spring.security.oauth2.client.registration.google.client-secret=xxx spring.security.oauth2.client.registration.google.scope=email,profile
- spring.security.oauth2.client.provider: Cấu hình cung cấp dịch vụ bên thứ ba sử dụng OAuth2.
Ví dụ:
spring.security.oauth2.client.provider.google.authorization-uri=https://accounts.google.com/o/oauth2/auth spring.security.oauth2.client.provider.google.token-uri=https://accounts.google.com/o/oauth2/token
- spring.security.filter.order: Xác định thứ tự các bộ lọc bảo mật trong chuỗi bộ lọc.
Ví dụ:
spring.security.filter.order=2
Chú ý: Các giá trị ví dụ trên được cung cấp chỉ để minh họa. Bạn cần điều chỉnh các giá trị này để phù hợp với môi trường và cấu hình cụ thể của bạn
6. Các thuộc tính Testing của Spring Boot trong Java
Spring Boot cung cấp rất nhiều thuộc tính để kiểm thử (testing) ứng dụng của bạn. Dưới đây là một số thuộc tính testing phổ biến của Spring Boot và ví dụ minh họa cụ thể:
- spring.datasource.initialization-mode: Xác định chế độ khởi tạo cơ sở dữ liệu trong quá trình kiểm thử.
Ví dụ:
spring.datasource.initialization-mode=always
- spring.datasource.url, spring.datasource.username, spring.datasource.password: Cấu hình kết nối đến cơ sở dữ liệu trong quá trình kiểm thử.
Ví dụ:
spring.datasource.url=jdbc:mysql://localhost:3306/mydatabase_test spring.datasource.username=root spring.datasource.password=123456
- spring.jpa.hibernate.ddl-auto: Cấu hình các lệnh tạo bảng trong Hibernate trong quá trình kiểm thử.
Ví dụ
spring.jpa.hibernate.ddl-auto=create-drop
- spring.test.database.replace: Xác định chế độ thay thế cơ sở dữ liệu khi chạy các kiểm thử.
Ví dụ:
spring.test.database.replace=none
- spring.main.allow-bean-definition-overriding: Cho phép ghi đè định nghĩa bean trong quá trình kiểm thử.
Ví dụ:
spring.profiles.active=test
Chú ý: Các giá trị ví dụ trên được cung cấp chỉ để minh họa. Bạn cần điều chỉnh các giá trị này để phù hợp với môi trường và cấu hình cụ thể của bạn.
7. Các câu hỏi thường gặp
Thuộc tính @SpringBootApplication được sử dụng để làm gì?
@SpringBootApplication là một Annotation mà giúp chúng ta cấu hình và khởi tạo một ứng dụng Spring Boot. Nó kết hợp nhiều Annotation khác như @Configuration, @EnableAutoConfiguration, @ComponentScan.
Thuộc tính spring.jpa.hibernate.ddl-auto được sử dụng để làm gì?
Thuộc tính này được sử dụng để cấu hình địa chỉ URL của cơ sở dữ liệu mà ứng dụng của bạn sẽ sử dụng.
Thuộc tính spring.mvc.view.prefix được sử dụng để làm gì?
Thuộc tính này được sử dụng để chỉ định tiền tố của các tệp view được sử dụng bởi ứng dụng.
Thuộc tính spring.application.name được sử dụng để làm gì?
Thuộc tính này được sử dụng để cấu hình tên ứng dụng. Nó sẽ xuất hiện trong các thông báo cảnh báo, nhật ký và các đường dẫn mà ứng dụng của bạn tạo ra.
8. Kết bài viết
Bài viết trên là danh sách một số thuộc tính thông dụng của Spring Boot trong Java. Các thuộc tính được mở rộng bao gồm rất nhiều thuộc tính nhỏ khác, trong bài viết này mình đã tập trung về các thuộc tính thông dụng và hay dùng tới trong Spring Boot. Nếu có bất kỳ thắc mắc gì hãy để lại comment để được giải đáp nhé, rất mong bài viết sẽ có ích cho bạn trong quá trình tìm hiểu về Spring Boot!!!