自動設定の作成
20421 ワード
学習目標
StarterとAutoConfigure
実施方法
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-autoconfigure</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-autoconfigure-processor</artifactId>
<optional>true</optional>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>2.5.3</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
ex.@beanとして登録するクラスファイル-Holoman.java
public class Holoman {
private String name;
private int howLong;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getHowLong() {
return howLong;
}
public void setHowLong(int howLong) {
this.howLong = howLong;
}
@Override
public String toString() {
return "Holoman{" +
"name='" + name + '\'' +
", howLong=" + howLong +
'}';
}
}
ex.@プロファイル-HolomanConfiguration.java@Configuration
public class HolomanConfiguration {
@Bean
public Holoman holoman(){
Holoman holoman = new Holoman();
holoman.setHowLong(26);
holoman.setName("linger0310");
return holoman;
}
}
src/main/resource/META-INFのspring.ファクトリファイルの作成
spring.工場に次のコードを追加します.
Key : org.springframework.boot.autoconfigure.EnableAutoConfiguration
Values:パッケージ名.作成されたプロファイル名.
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
패키지 이름.생성한 Configuration 파일 이름
EnableAutoConfigurationとして登録されているbeanを他のプロジェクトで使用する方法
beanとbean構成の起動と自動構成プロジェクトの定義
Initという名前の他のプロジェクトにstarterおよびautoconfigureプロジェクトへの依存性を追加
外部ライブラリに追加されたことを確認
@ConfigurationProperties
EnableAutoConfigurationのbeanにインポートし、適切に再定義します.
使用する場合は、再定義ではなく初期入力の設定が反映される場合があります.
解決策
方法1.@ConditionalOnMissingBean
使用すると、財政の定義が反映されます.
@Configuration
public class HolomanConfiguration {
@Bean
@ConditionalOnMissingBean
public Holoman holoman(){
Holoman holoman = new Holoman();
holoman.setHowLong(26);
holoman.setName("linger0310");
return holoman;
}
}
方法2.@コンフィギュレーションプロパティを使用して、よりクリーンに処理します.<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
@ConfigurationProperties("holoman (application.properties에서 사용할 이름)")
public class HolomanProperties {
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getHowLong() {
return howLong;
}
public void setHowLong(int howLong) {
this.howLong = howLong;
}
private String name;
private int howLong;
}
ex
holoman.name = cyj
holoman.how-long = 100
ex
@Configuration
@EnableConfigurationProperties(HolomanProperties.class)
public class HolomanConfiguration {
@Bean
@ConditionalOnMissingBean
public Holoman holoman(HolomanProperties properties){
Holoman holoman = new Holoman();
holoman.setHowLong(properties.getHowLong());
holoman.setName(properties.getName());
return holoman;
}
}
メソッド1でもメソッド2でも、最終的にはbeanにmvn installを行って変更結果を反映します.Reference
この問題について(自動設定の作成), 我々は、より多くの情報をここで見つけました https://velog.io/@linger0310/자동-설정-만들기テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol