を使用せずに新しいBeanを作成し、私は、私は上記のコードは、ProductDataModelためのBeanを作成しているようだ@Service @Scopeが@Bean注釈
@Slf4j
@Service
@Scope(value = "request", proxyMode = ScopedProxyMode.TARGET_CLASS)
public class ProductDataModel {
@Value("${message}")
private String message;
で注釈されているクラスを持っています@Beanアノテーションを使用せずに
私は@Autowired ProductDataModel productDataModel
を私のコードに使用しています。上記のコードと一緒に使用すると、依存関係のproductDataModelはnullではありません。
どのように上記のコードがBeanを作成していますか?
理想的には、私は以下のコード
//I am not using this piece of code in my program., for reference only
@Configuration
public class OSCConfig {
@Bean
@Scope(value = "request", proxyMode = ScopedProxyMode.TARGET_CLASS)
ProductDataModel productDataModel(){
return new ProductDataModel();
}
を使用する場合にのみ作成にBeanを期待しているだろう誰かがコードしている時にいずれかを使用するの2枚の違いを説明することができます。
これはコンポーネントスキャンです。使用するクラス/ Beanごとに '@ Bean'を指定する必要はありません。 '@ Component'や' @Service'のような特別なバージョンのものをクラスに置くと、それはコンポーネントスキャンを使うときに自動的に検出されます。 –
これが当てはまる場合は、コンストラクタで宣言するBeanを使用している場合や、init、cleanupなどのライフサイクルコールバックメソッドを指定する場合にのみ@Beanを使用する必要があります。 – Abhi
実際には、 '... –