繁体   English   中英

Spring @Import值是没有@Configuration的普通类

[英]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

  1. 如果Any.class带有@Component注释,依此类推,Spring将创建以完整类命名的bean:com.xxx.Any。

  2. 如果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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM