Spring Boot のプロファイル: 原則、使用法、例
序文
Spring Boot は、Spring アプリケーションを迅速に開発するためのフレームワークであり、多くの便利な機能を提供します。その中でも、プロファイルは一般的に使用される機能であり、異なる環境構成に応じて異なる構成ファイルをロードして、異なる構成ロジックを実現できます。この記事では、Spring Boot における Profile の原理、使い方、例を紹介します。
プロファイルの原則
Spring Boot では、プロファイルは構成ファイルを通じて実装されます。異なる環境では、異なる構成ファイルをロードして、異なる構成ロジックを実装できます。具体的には、Spring Boot は次の構成ファイルをサポートしています。
- アプリケーションのプロパティ
- アプリケーション.yml
- アプリケーション-{プロファイル}.properties
- アプリケーション-{プロファイル}.yml
このうち、application.properties と application.yml は共通の設定ファイルであり、すべての環境に読み込まれます。また、application-{profile}.properties と application-{profile}.yml は、異なるプロファイルに従ってロードされる構成ファイルです。アプリケーションが起動すると、Spring Boot は現在の環境変数に基づいてどの構成ファイルをロードするかを決定します。たとえば、現在の環境変数が dev の場合、application-dev.properties または application-dev.yml ファイルがロードされます。
プロファイルの使用法
実際の開発では、プロファイルを使用して以下の機能を実現できます。
- 開発、テスト、運用環境などの異なる環境を区別します。
- さまざまなデータベース接続情報を構成します。たとえば、開発環境ではローカル MySQL データベースを使用し、テスト環境ではリモート MySQL データベースを使用し、運用環境では Alibaba Cloud RDS データベースを使用します。
- さまざまなログ レベルを構成します。たとえば、開発環境では DEBUG レベルを使用し、テスト環境では INFO レベルを使用し、運用環境では WARN レベルを使用します。
プロファイルを使用する手順は次のとおりです。
1. 設定ファイルを作成する
まず、プロジェクトのリソース ディレクトリにさまざまな構成ファイルを作成する必要があります。次に例を示します。
- application-dev.properties: 開発環境の構成ファイル。
- application-test.properties: テスト環境の構成ファイル。
- application-prod.properties: 運用環境の構成ファイル。
# application-dev.properties
spring.datasource.url=jdbc:mysql://localhost:3306/test
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
logging.level.root=debug
# application-test.properties
spring.datasource.url=jdbc:mysql://remote-server:3306/test
spring.datasource.username=test
spring.datasource.password=test123
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
logging.level.root=info
# application-prod.properties
spring.datasource.url=jdbc:mysql://aliyun-rds:3306/test
spring.datasource.username=prod
spring.datasource.password=prod123
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
logging.level.root=warn
2. プロファイルの構成
プロジェクトの構成ファイルで、現在のプロファイルを構成する必要があります。次の 2 つの方法があります。
- application.properties ファイルで構成されます。
spring.profiles.active=dev
- 起動コマンドで設定します。
java -jar myproject.jar --spring.profiles.active=dev
3. 設定を使用する
コードでは、@Value アノテーションを介して構成情報を挿入できます。例えば:
@Service
public class UserService {
@Value("${spring.datasource.url}")
private String url;
@Value("${spring.datasource.username}")
private String username;
@Value("${spring.datasource.password}")
private String password;
@Value("${spring.datasource.driver-class-name}")
private String driverClassName;
// ...
}
プロファイルの例
以下は、Profile を使用したプロジェクトの例です。
1. プロジェクトを作成する
まず、Spring Initializr を使用して新しい Spring Boot プロジェクトを作成し、次の依存関係を追加します。
- スプリングウェブ
- Spring Data JPA
- H2 データベース
2. 設定ファイルを作成する
プロジェクトのリソース ディレクトリに次の構成ファイルを作成します。
- アプリケーション開発のプロパティ
spring.datasource.url=jdbc:h2:mem:devdb
spring.datasource.username=sa
spring.datasource.password=sa
spring.datasource.driver-class-name=org.h2.Driver
logging.level.root=debug
-application-test.properties
spring.datasource.url=jdbc:h2:mem:testdb
spring.datasource.username=sa
spring.datasource.password=sa
spring.datasource.driver-class-name=org.h2.Driver
logging.level.root=info
- アプリケーション製品のプロパティ
spring.datasource.url=jdbc:h2:mem:proddb
spring.datasource.username=sa
spring.datasource.password=sa
spring.datasource.driver-class-name=org.h2.Driver
logging.level.root=warn
3. プロファイルの構成
application.properties ファイルで現在のプロファイルを構成します。
spring.profiles.active=dev
4. エンティティクラスとDAOの作成
データベースを操作するためのUserエンティティクラスとUserRepositoryインタフェースを作成します。
@Entity
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String username;
private String password;
// getters and setters
}
@Repository
public interface UserRepository extends JpaRepository<User, Long> {
}
5. コントローラーを作成する
HTTP リクエストを処理する UserController コントローラーを作成します。
@RestController
@RequestMapping("/users")
public class UserController {
@Autowired
private UserRepository userRepository;
@GetMapping
public List<User> getUsers() {
return userRepository.findAll();
}
@PostMapping
public User createUser(@RequestBody User user) {
return userRepository.save(user);
}
}
6. プロジェクトを実行する
次のコマンドでプロジェクトを開始します。
java -jar myproject.jar --spring.profiles.active=dev
次に、Postman ツールまたはcurl ツールを使用してプロジェクトをテストできます。たとえば、次の POST リクエストを送信します。
POST http://localhost:8080/users
Content-Type: application/json
{
"username": "alice",
"password": "123456"
}
ご覧のとおり、リクエストは成功し、作成された User オブジェクトが返されます。
7. さまざまなプロファイルをテストする
application.properties の spring.profiles.active プロパティを変更し、プロジェクトを再起動してさまざまなプロファイルをテストしてみてください。たとえば、次のように変更してテストします。
spring.profiles.active=test
次に、プロジェクトを再度実行し、POST リクエストを送信します。
POST http://localhost:8080/users
Content-Type: application/json
{
"username": "bob",
"password": "123456"
}
リクエストが成功し、作成された User オブジェクトが返されたことがわかりますが、コンソール上のログ レベル出力が INFO レベルに変更されています。
結論は
プロファイルは Spring Boot の非常に便利な機能で、さまざまな環境でさまざまな構成を実現するのに役立ちます。この記事では、読者が Spring Boot の Profile 機能をよりよく理解して使用できるように、Profile の原理、使用法、例を紹介します。