1. <ul id="0c1fb"></ul>

      <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
      <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区

      RELATEED CONSULTING
      相關(guān)咨詢
      選擇下列產(chǎn)品馬上在線溝通
      服務(wù)時間:8:30-17:00
      你可能遇到了下面的問題
      關(guān)閉右側(cè)工具欄

      新聞中心

      這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
      @Configuration與@Component有什么區(qū)別

      本篇文章為大家展示了@Configuration與@Component有什么區(qū)別,內(nèi)容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

      泰興網(wǎng)站建設(shè)公司成都創(chuàng)新互聯(lián),泰興網(wǎng)站設(shè)計制作,有大型網(wǎng)站制作公司豐富經(jīng)驗。已為泰興上1000+提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\成都外貿(mào)網(wǎng)站建設(shè)要多少錢,請找那個售后服務(wù)好的泰興做網(wǎng)站的公司定做!

      @Configuration注解的類:

      @Configuration
      public class MyBeanConfig {
       @Bean
       public Country country(){
        return new Country();
       }
       @Bean
       public UserInfo userInfo(){
        return new UserInfo(country());
       }
      }

      @Component注解的類:

      /**
       * @Description 測試用的配置類
       * @Author 弟中弟
       * @CreateTime 2019/6/18 14:36
       */
      @Component
      public class MyBeanConfig {
       @Bean
       public Country country(){
        return new Country();
       }
       @Bean
       public UserInfo userInfo(){
        return new UserInfo(country());
       }
      }

      測試:

      @RunWith(SpringRunner.class)
      @SpringBootTest
      public class DemoTest {
      
        @Autowired
        private Country country;
      
        @Autowired
        private UserInfo userInfo;
      
        @Test
        public void myTest() {
          boolean result = userInfo.getCountry() == country;
          System.out.println(result ? "同一個country" : "不同的country");
        }
      
      }

      如果是@Configuration打印出來的則是同一個country,@Component則是不同的country,這是為什么呢?

      @Target({ElementType.TYPE})
      @Retention(RetentionPolicy.RUNTIME)
      @Documented
      @Component
      public @interface Configuration {
        @AliasFor(
          annotation = Component.class
        )
        String value() default "";
      }

      你點開@Configuration會發(fā)現(xiàn)其實他也是被@Component修飾的,因此context:component-scan/ 或者 @ComponentScan都能處理@Configuration注解的類。

      @Configuration標記的類必須符合下面的要求:

      配置類必須以類的形式提供(不能是工廠方法返回的實例),允許通過生成子類在運行時增強(cglib 動態(tài)代理)。

      配置類不能是 final 類(沒法動態(tài)代理)。

      配置注解通常為了通過 @Bean 注解生成 Spring 容器管理的類,

      配置類必須是非本地的(即不能在方法中聲明,不能是 private)。

      任何嵌套配置類都必須聲明為static。

      @Bean 方法可能不會反過來創(chuàng)建進一步的配置類(也就是返回的 bean 如果帶有

      @Configuration,也不會被特殊處理,只會作為普通的 bean)。

      但是spring容器在啟動時有個專門處理@Configuration的類,會對@Configuration修飾的類cglib動態(tài)代理進行增強,這也是@Configuration為什么需要符合上面的要求中的部分原因,那具體會增強什么呢?

      這里是個人整理的思路 如果有錯請指點

      userInfo()中調(diào)用了country(),因為是方法那必然country()生成新的new contry(),所以動態(tài)代理增加就會對其進行判斷如果userInfo中調(diào)用的方法還有@Bean修飾,那就會直接調(diào)用spring容器中的country實例,不再調(diào)用country(),那必然是一個對象了,因為spring容器中的bean默認是單例。不理解比如xml配置的bean

      這里scope默認是單例。

      以上是個人理解,詳情源碼的分析請看https://www.jb51.net/article/153430.htm

      但是如果我就想用@Component,那沒有@Component的類沒有動態(tài)代理咋辦呢?

      @Component
      public class MyBeanConfig {
       @Autowired
       private Country country;
       @Bean
       public Country country(){
        return new Country();
       }
       @Bean
       public UserInfo userInfo(){
        return new UserInfo(country);
       }
      }

      上述內(nèi)容就是@Configuration與@Component有什么區(qū)別,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。


      當前名稱:@Configuration與@Component有什么區(qū)別
      本文路徑:http://ef60e0e.cn/article/jdogii.html
      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区
      1. <ul id="0c1fb"></ul>

        <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
        <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

        常州市| 临安市| 琼结县| 屏东县| 松原市| 错那县| 安阳县| 娱乐| 武汉市| 申扎县| 清流县| 安陆市| 阳新县| 法库县| 措美县| 额尔古纳市| 长垣县| 普格县| 萝北县| 陵水| 潼关县| 大新县| 镇原县| 子长县| 绥棱县| 连南| 乐都县| 剑阁县| 磴口县| 海城市| 沅江市| 汝城县| 稷山县| 石狮市| 阿拉善右旗| 高阳县| 大庆市| 黄陵县| 滦平县| 永吉县| 宁德市|