spring bean依赖
一个春天建议注射豆从Spring的参考指南复制下面的示例中显示之间的相互依存关系的方式在这里 :
@Configuration
public class AppConfig {@Beanpublic Foo foo() {return new Foo(bar());}@Beanpublic Bar bar() {return new Bar("bar1");}}
所以在这里,bean`foo`被注入了`bar`依赖关系。
但是,还有一种替代方法无法很好地记录依赖关系,它是通过以下方式将依赖关系作为@Bean方法参数:
@Configuration
public class AppConfig {@Beanpublic Foo foo(Bar bar) {return new Foo(bar);}@Beanpublic Bar bar() {return new Bar("bar1");}}
不过这里有一个问题,注入现在是按类型进行的,`bar`依赖项将首先按类型进行解决,如果找到重复项,则按名称进行解决:
@Configuration
public static class AppConfig {@Beanpublic Foo foo(Bar bar1) {return new Foo(bar1);}@Beanpublic Bar bar1() {return new Bar("bar1");}@Beanpublic Bar bar2() {return new Bar("bar2");}
}
在上面的示例中,依赖项“ bar1”将被正确注入。 如果您想更明确一点,可以在以下位置添加@Qualifer批注:
@Configuration
public class AppConfig {@Beanpublic Foo foo(@Qualifier("bar1") Bar bar1) {return new Foo(bar1);}@Beanpublic Bar bar1() {return new Bar("bar1");}@Beanpublic Bar bar2() {return new Bar("bar2");}
}
因此,现在是否建议这样做的问题,在某些情况下我会说是。 例如,如果在不同的@Configuration类中定义了bar bean,则注入依赖项的方式如下:
@Configuration
public class AppConfig {@Autowired@Qualifier("bar1")private Bar bar1;@Beanpublic Foo foo() {return new Foo(bar1);}}
我发现这里的方法参数方法更简单:
@Configuration
public class AppConfig {@Beanpublic Foo foo(@Qualifier("bar1") Bar bar1) {return new Foo(bar1);}}
有什么想法吗?
翻译自: https://www.javacodegeeks.com/2014/10/spring-configuration-and-injecting-bean-dependencies-as-method-parameters.html
spring bean依赖