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的方法可以是public,protected,package 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 閱讀(315) 評論(0)  編輯  收藏 所屬分類: spring
          <2020年4月>
          2930311234
          567891011
          12131415161718
          19202122232425
          262728293012
          3456789

          常用鏈接

          留言簿(2)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          相冊

          收藏夾

          Java

          搜索

          •  

          最新隨筆

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 财经| 神木县| 鸡东县| 清丰县| 鹤庆县| 天祝| 孝感市| 通州区| 海门市| 贵港市| 武定县| 张家港市| 临沧市| 大荔县| 宽甸| 雷州市| 鄂托克前旗| 响水县| 镇赉县| 武功县| 简阳市| 罗定市| 安阳市| 巩义市| 卢湾区| 宝应县| 昭通市| 诏安县| 农安县| 天柱县| 鄂尔多斯市| 无锡市| 霍城县| 错那县| 兰西县| 曲松县| 普安县| 定兴县| 南岸区| 民勤县| 渑池县|