簡體   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