posts - 93,  comments - 2,  trackbacks - 0
          @PostConstruct
          PostConstruct注釋用于在完成依賴項注入以執行任何初始化之后需要執行的方法。必須在類投入使用之前調用此方法。
          所有支持依賴注入的類都必須支持此注釋。即使類沒有請求注入任何資源,也必須調用使用PostConstruct注釋的方法。
          只有一個方法可以使用此批注進行批注。
          應用PostConstruct注釋的方法必須滿足以下所有條件:除了攔截器之外,方法絕不能有任何參數,在這種情況下它采用Interceptor規范定義的InvocationContext對象。
          在攔截器類上定義的方法必須具有以下簽名之一:
          void <METHOD>(InvocationContext)Object <METHOD>(InvocationContext)拋出異常注意:
          PostConstruct攔截器方法不能拋出應用程序異常,但可以聲明它拋出檢查異常,包括java.lang.Exception,
          如果相同的攔截器方法除了生命周期事件之外插入業務或超時方法。
          如果PostConstruct攔截器方法返回一個值,容器將忽略它。
          在非攔截器類上定義的方法必須具有以下簽名:void <METHOD>()應用PostConstruct的方法可以是publicprotectedpackage privateprivate。
          除應用程序客戶端外,該方法絕不能是靜態的。
          該方法可能是最終的。如果該方法拋出一個未經檢查的異常,那么該類絕不能投入使用,除非EJB可以處理異常甚至從它們恢復的EJB

          然后就會思考問題,這個注釋是修飾初始化之后需要執行的方法,那么它和@Autowired、構造函數的執行順序是什么呢?(當然注釋中已經說明了PostConstruct注釋用于在完成依賴項注入之后)
          @Service
          public class BeanA {

              @Autowired
              private BeanB beanB;

              public BeanA() {
                  System.out.println("這是Bean A 的構造方法");
              }
              @PostConstruct
              private void init() {
                  System.out.println("這是BeanA的 init 方法");
                  beanB.testB();
              }
          }
          @Service
          public class BeanB {

              @PostConstruct
              private void init() {
                  System.out.println("這是BeanB 的init 方法");
              }
              public BeanB() {
                  System.out.println("這是Bean B的 構造方法");
              }
              void testB() {
                  System.out.println("這是Bean B 的 testB 方法");
              }
          }

          啟動后輸出:
          這是Bean A 的構造方法 
          這是Bean B的 構造方法
          這是BeanB 的init 方法
          這是BeanA的 init 方法
          這是Bean B 的 testB 方法

          所以得到結論: 構造方法 > @Autowired > @PostConstruct
          posted on 2020-04-09 15:29 Terry Zou 閱讀(318) 評論(0)  編輯  收藏 所屬分類: spring
          <2020年4月>
          2930311234
          567891011
          12131415161718
          19202122232425
          262728293012
          3456789

          常用鏈接

          留言簿(2)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          相冊

          收藏夾

          Java

          搜索

          •  

          最新隨筆

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 凤翔县| 绥芬河市| 军事| 库车县| 海兴县| 若羌县| 桐乡市| 时尚| 肇东市| 乌恰县| 大城县| 阳朔县| 吴堡县| 无棣县| 库尔勒市| 朝阳县| 霞浦县| 青阳县| 绥芬河市| 兴宁市| 利辛县| 清水河县| 大安市| 乌海市| 昌黎县| 东安县| 嘉祥县| 松江区| 武功县| 庆安县| 科技| 凤阳县| 台北市| 明光市| 芒康县| 二手房| 二连浩特市| 绥芬河市| 南乐县| 天祝| 余姚市|