Java 如果一个bean在另一个配置中而没有autowire,如何将它的属性设置为另一个bean?
在Java 如果一个bean在另一个配置中而没有autowire,如何将它的属性设置为另一个bean?,java,spring,dependency-injection,Java,Spring,Dependency Injection,在@Autowire的帮助下,可以从另一个配置中的bean设置属性 是否可以在基于Java的配置代码中执行等效赋值 样本如下 它输出: instance1.instance2 = com.inthemoon.snippets.springframework.InterconfigSettingTry$Bean2@574b560f instance1.instance3 = null 这证明,该属性是在配置之间自动连接的 示例包含注释,解释了我希望在何处分配属性而不是@Autowired: pu
@Autowire
的帮助下,可以从另一个配置中的bean设置属性
是否可以在基于Java的配置代码中执行等效赋值
样本如下
它输出:
instance1.instance2 = com.inthemoon.snippets.springframework.InterconfigSettingTry$Bean2@574b560f
instance1.instance3 = null
这证明,该属性是在配置之间自动连接的
示例包含注释,解释了我希望在何处分配属性而不是@Autowired
:
public class InterconfigSettingTry {
// first bean class with two properties, one of which is set with autowire, while another does not
public static class Bean1 {
@Autowired
public Bean2 instance2;
// @Autowired // not using autowire feature
public Bean2 instance3;
}
// second bean class, which will be instantiated in two beans
public static class Bean2 {
}
// java based configuration #1, which contains a bean, wishing to be aware of two beans in another config
@Configuration
public static class _Config1 {
@Bean
public Bean1 instance1() {
Bean1 ans = new Bean1();
// how to set ans.instance3 here without autowire?
//ans.instance3 = ???
return ans;
}
}
// java based configuration #2
@Configuration
public static class _Config2 {
@Bean
public Bean2 instance2() {
return new Bean2();
}
@Bean
public Bean2 instance3() {
return new Bean2();
}
}
// main method
public static void main(String[] args) {
ApplicationContext context = new AnnotationConfigApplicationContext(_Config1.class, _Config2.class);
Bean1 instance1 = (Bean1) context.getBean("instance1");
System.out.println("instance1.instance2 = " + instance1.instance2);
System.out.println("instance1.instance3 = " + instance1.instance3);
}
}
听说过setter方法吗。。。创建一个,在你对bean1的定义中调用它。。。但是如果他们知道,为什么要分开配置或者不使用自动配置呢?请建议setter方法,它可以解决这个问题。单独配置是一个先决条件。那么我仍然不明白为什么您不能使用
@Autowired
这有什么问题?接下来,如果这些是必需的依赖项,我将使用构造函数注入,而不是带有setter的字段。在您当前的方法中,您可以创建一个无效的Bean1
实例。我想了解一下,从Java配置@Configuration
中还可以做些什么,这是一个@组件
,因此它只是一个普通的bean(应用了一些魔法,但仍然是一个bean)。您在类中放置了一个字段,并在其上添加了@Autowired
。