2017-06-08 10 views
0
file-a.java 

package com.abcd.common; 
import com.xyz.HCStrategy; 
import com.xyz.DHC; 

@Configuration 
public class HCConfig { 
    @Bean 
    public HCStrategy dHC() { 
     return new DHC(); 
    } 
} 



file-b.java 

package com.abcd.app; 
public class SCConfig { 
    @Bean 
    public meow() { 
    //I want to call dHC here 
    } 

} 

1つの方法は、HCConfigのオートワイヤを作成し、そのオブジェクトを使用してdHCを呼び出すことです。しかし、ファイルbからdHCを直接自動配線し、HCConfigのオブジェクトを作成せずに使用したいと思います。 HCStrategyをオートワイヤリングすることはできますが、それはインポートであり自分のクラスではないので動作しません。私はそれはあなたが達成したいですものではありません100%確信別のクラスの別のBean宣言にBeanを挿入するには?

file-b.java 

package com.abcd.app; 
@Component 
public class SCConfig { 
    private final HCStrategy hcStrategy; 

    @Autowired 
    public SCConfig(HCStrategy hcStrategy){ 
     this.hcStrategy = hcStrategy; 
    } 

    public [return type] meow() { 
    //you can use here hcStrategy bean 
    } 

} 
+0

ちょうどそれをメソッドの引数として入れます。 –

答えて

0

これを試してみてください。あなたのコードでは、SCConfigは@Configurationがないため、実際にはSpring Configurationではありません。もちろん、ここではコンポーネントのスキャンは使用せず、インポートは行いません。 HCConfigがインポートされている場合、HCStrategyはアプリケーションコンテキストにあります。したがって、SCConfigの下の例のように、HCStrategyをautowireできます。

file-a.java 

package com.abcd.common; 
import com.xyz.HCStrategy; 
import com.xyz.DHC; 

@Configuration 
public class HCConfig { 

    @Bean 
    public HCStrategy dHC() { 
     return new DHC(); 
    } 
} 

file-b.java 

package com.abcd.app; 

@Configuration 
public class SCConfig { 

    @Bean 
    public meow(HCStrategy hcsStrategy) { 
     ... 
    } 
} 
0

、しかし、あなたはちょうどSCConfig whithin HCStrategyを必要とするように聞こえる:

関連する問題