在我的项目,我惊讶地看到,春季(4.3)似乎试图自动装配的,即使他们是手动实例化类的依赖。
MyClass.java
(注意龙目岛的注释):
@NoArgsConstructor
@AllArgsConstructor
public class MyClass {
@Autowired
private MyClassDependency dependency;
}
MyClassDependency.java
使用一个工厂方法,并没有Spring注解:
public class MyClassDependency {
public static MyClassDependency create() { return new MyClassDependency(); }
}
Spring配置导致NoSuchBeanDefinitionException
:
@Configuration
public class SpringConfig {
@Bean
public MyClass myClass() {
return new MyClass(MyClassDependency.create());
}
}
提供了豆使得春节快乐:
@Configuration
public class SpringConfig {
@Bean
public MyClass myClass() {
return new MyClass(); // let autowire inject dependencies
}
@Bean
public MyClassDependency myClassDependency() {
return MyClassDependency.create();
}
}
这是一个巨大的惊喜给我。我想有配置......这是哪里的行为从/控制未来的更简单的第一个版本?(这是可能的,我错过了或者从一些依赖把它)。
PS:为了澄清,MyClass
代码是超出了我的控制,但我可以改变Spring配置。我期待了解Spring如何拦截构造函数调用withing bean方法和构造函数是否可以用来代替。
问题如下:
因此,有@Bean,但手动注入@Autowired依赖互相冲突,你现在可以理解,为什么 - 你不可注射自动装配Autowired豆手动!自动装配Autowired是一个注释,告诉他CI容器做一些工作注入。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句