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

          然后就會思考問題,這個注釋是修飾初始化之后需要執(zhí)行的方法,那么它和@Autowired、構造函數(shù)的執(zhí)行順序是什么呢?(當然注釋中已經說明了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 閱讀(319) 評論(0)  編輯  收藏 所屬分類: spring
          <2020年4月>
          2930311234
          567891011
          12131415161718
          19202122232425
          262728293012
          3456789

          常用鏈接

          留言簿(2)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          相冊

          收藏夾

          Java

          搜索

          •  

          最新隨筆

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 普洱| 定边县| 榕江县| 灌阳县| 方城县| 靖州| 屏山县| 涪陵区| 海伦市| 舞钢市| 阿合奇县| 寿宁县| 鄂州市| 女性| 上林县| 襄樊市| 深圳市| 宜阳县| 社旗县| 樟树市| 邳州市| 常熟市| 塔城市| 阿图什市| 固阳县| 博湖县| 和平县| 万安县| 东乡族自治县| 辽阳市| 台南县| 湖南省| 扎兰屯市| 龙门县| 大英县| 崇阳县| 田林县| 五莲县| 连城县| 百色市| 松滋市|