spring 零散知識點

<context:annotation-config> 告訴spring 我們打算使用基於註解的自動裝配 (這樣只是有助於我們消除使用<constructor-arg> 和 <property>, 單還是必須要顯示的聲明bean)

<context:component-scan> 其除了完成 <context:annotation-config>的工作,還會自動檢測和創建bean,既不需要我們現實的聲明<bean>......</bean>


過濾組件掃描

<context:component-scan>

        <context:exclude-filter>

        <context:include-filter>

</context:component-scan>


@Autoware  (顯示通過構造函數裝配,然後是byType裝配),不僅可以用來裝配setter方法,還可以標註需要自動裝配的任何方法,還可以對構造器進行標註,還可以直接標註屬性,並刪除setter方法, 當標註多個構造器時,spring會選擇參數最多的哪一個構造器

屬性:

required: 設置爲false 表示可以裝配,可以爲空,防止拋出異常(spring找不到相應的bean時);


@Qualifier("specific_bean"): 標註改bean是個指定的特殊bean , 和@autoware一起使時是,當@Autoware 匹配到多個bean時,縮小到那些被@Qualifier 標註限定的範圍內


JSR-330 : 爲了統一各種依賴注入的編程模型,JCP發佈了java 依賴注入規範, 既JSR-330


@Inject 是jsr-330 的核心部件,該註解幾乎可以完全替換@Autowire,可以用來自動裝配屬性,方法,構造器,和@Autowire 不同,@Inject 沒有require屬性

@Named:其功能非常類似於@Qualifier (@Named("specific_beanName")) --(實際上@Named註解就是一個@Qualifier註解多標註的註解)



@Value: spring3.0中引入的用來標註基本數據類型的值,如int boolean,可以用來直接標註屬性,方法,或者方法參數

@Value("Eruption"),其中Eruption 是一個表達式(spel),它的計算結果可以使任何類型,既@Value 可以裝配任意類型的屬性



Spring 只支持方法連接點,既在方法調用之前,之後,異常等等, 而AspectJ不僅支持方法連接點,還支持構造器和字段接入點,如對象的某個字段的值發生改變時執行切面邏輯  ,或者用構造器初始化對象是執行切面邏輯




JPA Hibernate 數據庫之間的關係

數據庫:這個我就不多介紹了(有很多種,MySql,Oracle,SQLServer等)

hibernate:一種面向對象的操作數據庫操作中間產物,以面向對象的方式操作數據庫(這之類的產品還有MyBatis等), 對不同數據庫進行了封裝,適用於所有數據庫,項目中切換不同的數據庫比較容易,比如我現在用的是MySql,但是公司想要用Oracle替換掉MySql,這樣只需要修改配置文件即可


JPA:sun公司提出的一種規範, 主流的對象關係映射第三方都實現了這種規範,好處是比如現在公司用的是Hibernate,但是公司要求替換成MyBatis,如果沒有用JPA的話,你需要在工程用把所有的Hibernate替換爲MyBatis, 有了JPA 你只需修改配置文件即可


以上三種關係可以理解爲,hibernate和Mybaits 對不同數據庫進行了封裝,使用戶不必關注與數據庫之間的不同,以一種統一的方式來操作不同的數據庫

而JPA是對 對象關係映射第三方的一種封裝,使得我們不必關心我們使用的是Hibernate還是Mybaits,在以後的工作中很方便的替換,只需要修改配置文件就好了





DAO 持久層,用來存儲數據

Service:業務層,處理一些業務邏輯(比如修改密碼),修改之後用DAO對密碼進行提交




serializable,標記接口,用來標記實現該接口的類具有特殊的功能,既序列換和反序列化(默認java類是不能被序列化和反序列化的),(標記接口在java中很常見)

發佈了20 篇原創文章 · 獲贊 4 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章