1. 程式人生 > >Spring 框架複習筆記

Spring 框架複習筆記

Spring是一個業務層框架。

一.大致介紹(IoC):

(一)什麼是IOC的功能

IoC:控制反轉。將建立物件的許可權交給Spring框架處理。

(二)步驟一:下載Spring開發包。

(三)步驟二:建立專案,將包匯入到專案中。(在學習完maven以後,將Jar座標寫入到pom.xml檔案中即可)。

(四)步驟三:建立對應的包結構:(xxxService<介面>. xxxServiceImpl<介面的實現類>)。

(五)步驟四: 將建立的包結構交給框架管理。

(六)步驟六:建立配置檔案:applicationContext.xml

在配置檔案中填寫約束檔案。然後配置第三步建立的實現類:

注意: 這個地方要填寫實現類(impl )的全路徑名。

 

(七)步驟五:開始進行整合測試。

測試類建立一個demo1

首先要建立工廠,載入核心配置檔案:ApplicationContext  ac =

                          new ClassPathXmlApplicationContext(“applicationContext.xml”);

                                          ac.getBean(“xxx”)   --> xxx是配置檔案中的

<beanId>

        建立介面的物件<好處在與耦合度高>

一: 依賴注入: service中注入一個Dao的物件(依賴)

交給Spring容器自動注入。

(1)採用在Application配置檔案中配置:

1) 演示依賴注入

<bean id=””   class=”” >  xxx屬性自己配置 </bean>

    依賴(Dao層全路徑名)

 

<bean id=””   class=””>

<property  name=””  ref=”” />                           (引用Dao層的Id值) 注入xxxServiceImpl中)

</bean>

① Set方法。(pojo中設定set方法)

<bean id=””   class=””>

        <property  name=””  value=”” />                           

</bean>

②構造方法的注入:

<bean id=””   class=””>

        <constructor-arg  name=””  value=”” />  

        <constructor-arg  name=””  value=”” />                           

</bean>

還可以採用ref引入的方式 引入一個已經配置好的類。

2)但不採用在配置檔案中配置注入問題, 使用標籤在Dao層次寫入標籤@Repository

    在xxxServiceImpl層次寫入@Service(xxxService).然後建立Dao的物件。

3)單一屬性值的設定:

2) <Bean id=”” class=””>

        <property name = “屬性名” value = “屬性值”>

</Bean>

3)  <Bean id=”” class=””>

        <property name = “屬性名”>

            <list>

                <value>xxx</value>

            </list>

        </property>

</Bean>

(此處是list集合 同時也可以是set集合  將listset即可,)

4) 3) <Bean id=”” class=””>

            <property name = “屬性名”>

                <map>

                        <entry key=”” value=”” / >

                        <entry key=”” value=”” / >

                        <entry key=”” value=”” / >

                <map>

            </property>

</Bean>

 

 

二: spel表示式的方式(簡單瞭解一下就行)

在注入的value的值中 採用value=”#{xxx}” 

Xxx:如果 值是字串的話 加單引號

值的話直接填寫。

可以填寫物件,物件的屬性,物件得方法。

三:依賴注入標籤的簡單概述:

①首先開啟註解掃描;

Context約束下面的標籤:

<context : component-scan base-package=”xxx”>     (xxx-->document)

<context : component-scan>

②在XxxServiceImpl 中配置component(); 作用在當前類上。      

  中間如果不配置value值得就是類名但是首字母小寫。

              但是比較原始。 瞭解就好。

③根據component 衍生出來得三個註解。 不同得層次有不同得註解。

Dao----->Response 持久層 (操作資料庫)

Service----->Service(value = “”)     業務層 (方法及具體的實現)

Controller----->Controller(value = “”)    WEB

④ 資料型別的注入:

基本資料型別的注入:在屬性名上面新增@Value (value = “”)

引用型別的注入: @Autowired   按照型別自動裝配

按名稱注入:  @Qualifier(value = “”)  根據Servicevalue進行裝配

注入的缺點在於要兩個一起用:

 第一行寫@Autowired 第二行寫@Qualifier

java提供的一個註解,Spring框架支援。

Resourcename = “” 根據名稱裝配  

 

 

 

二:大致介紹(AOP

1) 面向切面的程式設計。

2) 底層原理 JDK動態代理。(簡單說就是介面實現類)

 Proxy.NewProxyInstancexxx.getClass().getClassLoader()   -->類的載入器

xxx.getClass().Interfaces()         --->介面

New InvocationHandler       -->匿名內部類

在測試類中拿到代理物件 用代理物件呼叫方法。

代理物件執行的時候。Invoke會執行一次。

3)AOP的術語:

 

Joinpoint 連線點   簡單來說指的就是方法。

Pointcut  切入點   想對那個方法進行更改,該方法就是切入點。

Advice   通知     攔截以後的通知。具體想做什麼功能。

Target   目標物件  代理的目標物件。(簡單指想要被增強的實現類)

Proxy    代理      JDK介面代理  和cglib的動態代理。

Aspect   切面      切入點(自己配置)和通知合二為一的東西。

 

詳解切面的配置xml文件:

①先配置aop(別名)約束.

②再配置切面類<bean id = “” class = “” />

③(1)配置通知。(先打< 觀察一下有不同種類型)

<aop : config>

<aop:aspect ref = “xxx”>   第二步所配置的id

<aop:xxx         mothed = “xxx”        pointcut=”xxx”>  

不同型別      不同的方法        切入點

切入點---> (execution(piblic *(void..) xxx))  xxx->方法全路徑名

</aop:asoect>

</aop : config>

③(2)通知可以配置的切面類中進行註解的配置;但需要開啟自動代理

 

<aop:aspectJ-autoproxy / >   開啟自動代理

3) 操作事物:

PlatformTransactionManager(介面)  平臺事物管理器

兩個介面的實現類:

DateSrouceTransactionManager

HibernateTransactionManager      

兩個重要方法commit rollback .

TransactionDifinition  設定事物的隔離級別.

TransactionStatus  顯示事物的狀態.