0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Spring Boot】@ConfigurationPropertiesを共通ライブラリ化する方法(AutoConfiguration)

0
Last updated at Posted at 2026-02-03

共通ライブラリの設定を自動読み込みする方法を調べたので忘れないようにメモ。

環境

  • Spring Boot 3.5.4
  • Java 21

まず@ConfigurationPropertiesクラスを用意する

Spring Boot ではapplication.ymlや環境変数などの設定値を型安全にまとめて扱うため@ConfigurationPropertiesを使えます。

application.yml
user:
  user-id: ${USER_ID:admin}
  user-name: ${USER_NAME:hoge}
UserConfig.java
@Data
@ConfigurationProperties(prefix="user")
public class UserConfig {
	
	// ユーザーID
	private String userId;		
	
	// ユーザー名
	private String userName;
    
}

Service クラスでの利用例

UserConfigがBean登録されていれば、以下のようにDIして使えます。

TestService.java
@Service
@RequiredArgsConstructor
public class TestService {
    private final UserConfig userConfig;
    public void testMethod() {
        userConfig.getUserId();
        userConfig.getUserName();
    }
}

@ConfigurationPropertiesScanを使った方法

下記のようにアプリケーションクラスに @ConfigurationPropertiesScanを追加すると共通化した別パッケージを参照することができます。

TestApplication.java
package project.test;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.context.properties.ConfigurationPropertiesScan;
@SpringBootApplication
@ConfigurationPropertiesScan(basePackages = {
    "project.test",
    "project.common.config"
})
public class TestApplication {
	public static void main(String[] args) {
		SpringApplication.run(TestApplication.class, args);
	}
}

@AutoConfigurationのimportファイルを使った方法

@ConfigurationPropertiesScanを使った方法でもいいのですが、新規システムが増えるたびに宣言するのは面倒です。

別の方法はないかと調べたところMETA-INF配下にAutoConfigurationのimportsファイルを作成すると@ConfigurationPropertiesScanを書く必要がなくなるとのことです。

手順

1. 自動設定クラスを作成

まずは下記のように@AutoConfigurationクラスを作成します。

CommonAutoConfiguration.java
package project.common.config;
import org.springframework.boot.autoconfigure.AutoConfiguration;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
@AutoConfiguration
@EnableConfigurationProperties(UserConfig.class)
public class CommonAutoConfiguration {
}

2. importsファイルを作成

次に以下の場所にファイルを作成します。

src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports

importsファイルの中身を下記のようにします。

org.springframework.boot.autoconfigure.AutoConfiguration.imports
project.common.config.CommonAutoConfiguration

これで、アプリケーションに@ConfigurationPropertiesScanを書かなくても自動的に設定が有効になります。

複数クラスを指定したい場合

@ConfigurationPropertiesクラスが複数存在する場合は@EnableConfigurationPropertiesに下記のように指定することができます。

CommonAutoConfiguration.java
@AutoConfiguration
@EnableConfigurationProperties({
    UserConfig.class,
    HogeAConfig.class,
    HogeBConfig.class
})
public class CommonAutoConfiguration {
}

importsファイルにはパッケージ全体を指定することはできず、クラス単位で指定する必要があります。

org.springframework.boot.autoconfigure.AutoConfiguration.imports
# これは指定できない ✕
project.common.config.*
# クラス単位で指定する ○
project.common.config.CommonAutoConfiguration

AutoConfigurationクラス側でまとめておくことで、importファイルは1行で済み、管理もしやすくなります。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?