[英]Spring @Import values are plain classes without @Configuration
参考该代码,导入的“ SomeController.class”未使用@ Configuration,@ Controller或@Component进行注释,但确实可以使用。
这合理吗,这里有潜在的问题吗?
@Import(SomeController.class)
@Configuration
public class MyConfiguration{
}
public class SomeController{
@Inject SomeService someService;
....
}
我是问问者。 这是我的测试结论:
使用@Import(Any.class)和Any.class不在Spring组件扫描范围内:
1.如果Any.class没有任何注释,Spring将创建以完整类命名的Bean:com.xxx.Any
如果Any.class带有@Component注释,依此类推,Spring将创建以完整类命名的bean:com.xxx.Any。
如果Any.class带有@Component(“ anyBean”)注释,依此类推,Spring将创建名为:anyBean的bean。
顺便说一句,如果Any.class在Spring组件扫描范围内,我们不需要@Import,Spring将创建名为:any的bean。
仅需要扫描/导入等才能找到未找到的bean。 如果Spring认为需要bean,那么它将继续加载并初始化它。
例如,
@Service
public class MyService {
@Autowire MyComponent myComponent;
}
即使MyComponent
没有被任何注释标记并且没有被任何@Import
导入,它也将被Spring实例化,仅因为MyService
需要它。
您可以将@Import
等视为Spring的入口点,即从哪里开始寻找bean,然后它将拉动整个层次结构。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.