请参阅代码,导入的“ SomeController.class”未使用@ Configuration,@ Controller或@Component进行注释,但确实可以使用。
这合理吗,这里有潜在的问题吗?
@Import(SomeController.class)
@Configuration
public class MyConfiguration{
}
public class SomeController{
@Inject SomeService someService;
....
}
答案 0 :(得分:0)
我是询问者。这是我对测试的结论:
使用@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
顺便说一句,如果Any.class在Spring组件扫描范围之内,我们不需要@Import,Spring将创建名为:any的bean
答案 1 :(得分:-1)
仅需要扫描/导入等操作才能找到未找到的bean。如果Spring认为需要bean,那么它将继续加载并初始化它。
例如
@Service
public class MyService {
@Autowire MyComponent myComponent;
}
即使MyComponent
没有被任何注释标记并且没有被任何@Import
导入,它也会被Spring实例化,仅因为MyService
是必需的。
您可以将@Import
等作为Spring的入口点,即从哪里开始寻找bean,然后它将拉动整个层次结构。