猿问

Spring将一个bean注入另一个bean

我正在尝试将一个 bean 注入到另一个使用它的 bean 中。我怎样才能做到这一点?


public class MySpringConfig{

@Bean

public MyObject getMyObject() {

  //.....


  return MyObjectInstance;

}




@Bean

public SomeObject getSomeObject(MyObject myObject) {


  //.....


  return SomeObjectInstance;

 }    

}


慕雪6442864
浏览 258回答 3
3回答

翻过高山走不出你

我认为你可以用这种方式做到这一点,这在我的项目中有效。@Configurationpublic class AppConfig { @Bean public Bean1 foo(@Qualifier("bean2") Bean2 bean2) {  return new Bean1(bean2); }}

德玛西亚99

我认为这可能有效! @Configuration public class AppConfig {  @Bean  public Bean2 bean2() {      return new Bean2();  }  @Bean  @DependsOn({"bean2"})  public Bean1 foo(@Autowired Bean2 bean2) {     return new Bean1(bean2); // or your can write new Bean1(bean2());  }}

天涯尽头无女友

@Bean参数在和中的工作方式并不完全相同@Component。对于用 注释的类@Component,自动装配构造函数需要指定它们,但在声明中@Bean您不需要提供参数来指定MyObject要使用的依赖项(虽然它会起作用),如果当前类可以访问的话,这是你的情况。因此,您想通过调用@Bean 定义来直接注入 bean 。 例如向它传递一个构造函数 arg :getMyObject()@Beanpublic SomeObject getSomeObject() {  //....  // you injected MyObject in the current bean to create  SomeObject object = new SomeObject(getMyObject());  //...  return SomeObjectInstance;     }并且不要忘记为类添加注释@Configuration以使其被 Spring 考虑。
随时随地看视频慕课网APP

相关分类

Java
我要回答