スプリングフレームワークのアノテーションは、クラスによって定義されたクラスをマークするために使用されます。 SpringのJavaベースの構成では、この注釈は非常に重要です。
クラスが@Configuration
アノテーションを使用すると、Springはそれを構成クラスとして扱い、処理してSpring Beanを生成および管理します。このタイプには、通常、1つ以上の
@Configuration
@Bean
@Configurationのコアコンセプト
クラスを構成クラスとしてマークしますこのクラスはBeanの定義のソースになり、Springはこれらの定義を使用してアプリケーションコンテキストを設定します。
代理店のメカニズム
コンポーネントと統合されています
@Bean
(または注釈付きのクラス)で@Bean
を使用すると、
注入
を許可しますクラスは、ビーンの作成に必要な依存関係アイテムを解決するために、コンストラクターまたはフィールドベースに基づいた依存関係の注入をサポートします。 @ComponentScan
@SpringBootApplication
@Configuration
@bean Method
:Beanを明示的に定義します。
@Configuration
シングルエクサムの動作
beanは1回のみ作成されます。
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Configuration public class AppConfig { @Bean public MyService myService() { return new MyServiceImpl(); } @Bean public MyController myController() { return new MyController(myService()); } }
- ベストプラクティス
- 1。 関数(dataConfig、serviceconfig、webconfigなど)によれば、構成は複数のクラスに分割されます。これにより、読みやすさとメンテナンスが向上します。
-
2。
外部構成ソース(application.propertiesまたはapplication.ymlなど)を使用し、
myController()
またはmyService()
注入値を使用します。MyService
すべての豆を表示しないでください。
register
、、コンポーネントを使用してください。
4。
または@Configuration public class DataConfig { @Bean public DataSource dataSource() { // 配置并返回数据源 } } @Configuration public class ServiceConfig { @Bean public UserService userService() { return new UserServiceImpl(); } }の注釈を使用して、条件付きでBeanを定義し、特定の環境または構成でBeanのみをロードします。
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class AppConfig {
@Bean
public MyService myService() {
return new MyServiceImpl();
}
@Bean
public MyController myController() {
return new MyController(myService());
}
}
5。
を使用して、構成属性をグループ化して、分散型注釈を最小限に抑えます。
@ConfigurationProperties
@Value
注意する必要がある事項
@Configuration public class DataConfig { @Bean public DataSource dataSource() { // 配置并返回数据源 } } @Configuration public class ServiceConfig { @Bean public UserService userService() { return new UserServiceImpl(); } }
手動でインスタンス化された豆
- クラスに豆を作成しないでください。Springの依存関係注入とライフサイクル管理をバイパスするためです。
-
間違った執筆:
@Configuration
new
サイクロン依存性相互に依存する豆を定義するときは、循環依存性を引き起こすため、注意してください。
@Configuration public class AppConfig { @Value("${app.name}") private String appName; @Bean public AppService appService() { return new AppService(appName); } }ソリューション:
- コードを再構築して、注入または使用するように
- を使用します。
再ロードの注釈方法を避けてください。
@Lazy
- クラスが最終的でない場合、
の機関メカニズムは効果的ではありません。構成クラスを最終的にマークしないでください。
@componentを慎重に使用してください@Bean
同じクラスで - と
の混合を避けます。処理方法が異なるため、これは予期しない動作につながる可能性があります。
@Configuration
注入の高度な例を使用 -
@Component
に頼って:各豆は別の豆に依存し、スプリングは依存関係の関係を自動的に解決します。@Configuration
@Configuration
は、Bean: および Beanによって再利用できます。Beanは複数のサービス間で再利用できます。
要約
目的
@Configuration @ComponentScan(basePackages = "com.example.myapp") public class AppConfig { // 必要时使用显式Bean }:
- は、濃縮およびタイプのセキュリティ方法でBeanを定義できます。
- ベストプラクティス:構成をモジュール化し、外部化された属性を使用し、Springの注釈( など)を使用します。
-
避ける必要があるトラップ:手動でインスタンス化された豆、サイクル依存関係、重い負荷
DataSource
メソッド、およびJdbcTemplate
ファイナルを使用します。
を使用して、強力で簡単なスプリングアプリケーションを構築することができます。
以上がspring-: @configuration-in-depthの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

jvm'sperformanceiscompetitivewitherruntimes、sped、safety、andproductivityの提供

javaachievesplatformedentenceTheThejavavirtualMachine(JVM)、avainwithcodetorunonanyplatformwithajvm.1)codescompiledintobytecode、notmachine-specificcode.2)

thejvmisanabstractcomputingMachineCrucialForrunningJavaProgramsDuetoitsPlatForm-IndopentInterChitecture.Itincludes:1)ClassLoaderForloadingClasses、2)Runtimedataareaforforforatastorage、3)executionEngineWithinterter、Jitcompiler、およびGarbagecolfecolfecolfececolfecolfer

jvmhasacloserelationshiptheosasittrantesjavabytecodecodecodecodecodecodecodecodecodecodecodecodecodetructions、manageSmemory、およびhandlesgarbagecollection.thisrelationshipallowsjavatorunonvariousosenvirnments、Butalsedentsはspeedifediferentjvmbeviorhiorsandosendisfredediferentjvmbehbehioorysando

Javaの実装「Write and、Run Everywherewhere」はBytecodeにコンパイルされ、Java仮想マシン(JVM)で実行されます。 1)Javaコードを書き、それをByteCodeにコンパイルします。 2)JVMがインストールされたプラットフォームでByteCodeが実行されます。 3)Javaネイティブインターフェイス(JNI)を使用して、プラットフォーム固有の機能を処理します。 JVMの一貫性やプラットフォーム固有のライブラリの使用などの課題にもかかわらず、Woraは開発効率と展開の柔軟性を大幅に向上させます。

javaachievesplatformentenceTheTheTheJavavirtualMachine(JVM)、CodetorunondifferentoperatingSystemswithOutModification.thejvmcompilesjavacodeplatform-IndopentedbyTecodeを承認することを許可します

javaispowerfulfulduetoitsplatformindepentence、object-orientednature、richstandardlibrary、performancecapability、andstrongsecurityfeatures.1)platformendependenceallowseplicationStorunonaydevicesupportingjava.2)オブジェクト指向のプログラマン型

上位のJava関数には、次のものが含まれます。1)オブジェクト指向プログラミング、サポートポリ型、コードの柔軟性と保守性の向上。 2)例外処理メカニズム、トライキャッチ式ブロックによるコードの堅牢性の向上。 3)ゴミ収集、メモリ管理の簡素化。 4)ジェネリック、タイプの安全性の向上。 5)コードをより簡潔で表現力豊かにするためのAMBDAの表現と機能的なプログラミング。 6)最適化されたデータ構造とアルゴリズムを提供するリッチ標準ライブラリ。


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SecLists
SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

MantisBT
Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

ZendStudio 13.5.1 Mac
強力な PHP 統合開発環境

SublimeText3 中国語版
中国語版、とても使いやすい
