2016-11-21 15 views
2

のは、私がSpringは自動的にJava Bean定義でコンストラクタargsをAutowireしますか?

@Bean 
public Beehive beehive(ArrayList<Bee> bees) { 
    return new Beehive(bees); 
} 

@Bean 
public ArrayList<Bee> bees() { 
    return new ArrayList<Bee>(); 
} 

beehive Beanメソッドでbeesは、以下のBean定義をAutowiredだろうしているとしましょうか?

@Autowired注釈を使用せずにこのように動作するアプリケーションがあり、何が起こっているのかを確認したいので頼んでいます。

+1

私はそうだと信じています。彼らが同じクラスにいるかどうかをより明確にする良い方法は、単純に 'return new Beehive(bees()); 'を使うことです。 argは、その後、 'beehive' beanメソッドから取り除くことができます。 – CollinD

+0

メソッドのシグネチャでは 'ArrayList'ではなく' List'を使うべきです。 –

+0

@EngineerDolleryしかし、もし私がハチを保つために 'ArrayList'だけが使われるようにしたいのであれば? – zero01alpha

答えて

2

Springは自動的にJava Bean定義でコンストラクタargsを自動作成しますか?

はい、あります。 hereは、私が下に追加したSpring文書(emphasis mine)から参照できます。

@Bean注釈付きメソッドは、そのBeanを構築するために必要な依存関係を記述するパラメータ の任意の数を有することができます。例えば については、当社TransferServiceAccountRepositoryを必要とする場合、我々は メソッドのパラメータを経由してその依存性を具現することができます

@Configuration 
public class AppConfig { 
    @Bean 
    public TransferService transferService(AccountRepository accountRepository) { 
     return new TransferServiceImpl(accountRepository); 
    } 
} 

解決メカニズムはかなり同じコンストラクタベース 依存性注入にあります。

関連する問題