1. 程式人生 > >java高階工程師---------spring的知識重點

java高階工程師---------spring的知識重點

spring的作用

  1. spring主要包括IOC和AOP,IOC依賴注入(控制反轉)很好的解決了程式碼的硬編碼耦合問題,通過配置檔案注入物件的方式例項化,擴充套件性更強。

  2. AOP面向切面程式設計的思想在一個業務流程中通過動態代理動態的將操作織入到流程中,減輕了編碼程度,可配置性和擴充套件性高,提高程式碼重複可用度。

spring的事物隔離級別

在Spring中定義了5中不同的事務隔離級別: 

  1. ISOLATION_DEFAULT(一般情況下使用這種配置既可)

    這是一個PlatfromTransactionManager預設的隔離級別,使用資料庫預設的事務隔離級別。

  2. ISOLATION_READ_UNCOMMITTED

    這是事務最低的隔離級別,它充許別外一個事務可以看到這個事務未提交的資料。這種隔離級別會產生髒讀,不可重複讀和幻像讀。大部分資料庫預設的事物隔離級別都不會出現這種狀況。

  3. ISOLATION_READ_COMMITTED 
    保證一個事務修改的資料提交後才能被另外一個事務讀取。另外一個事務不能讀取該事務未提交的資料。這種事務隔離級別可以避免髒讀出現,但是可能會出現不可重複讀和幻像讀。   

  4. ISOLATION_REPEATABLE_READ   
    這種事務隔離級別可以防止髒讀,不可重複讀。但是可能出現幻像讀。

  5.  ISOLATION_SERIALIZABLE 

    這是花費最高代價但是最可靠的事務隔離級別。事務被處理為順序執行。除了防止髒讀,不可重複讀外,還避免了幻讀。

事物的傳播特性

  1. Required——t1無事物則t2開啟新事物,t1有事物則t2也用t1事物

  2. RequiredNew——t1無事物則t2開啟新事物,t1有事物t2仍然開啟t2事物

  3. Supports——t1無事物則t2也不開啟事物,t1開啟事物則t2使用t1事物

  4. Mandatory——t1無事物t2則報錯 ,t1有事物則t2也用t1事物

  5. NotSupport——t1無事物則t2也無事物,t1有事物t2也無事物

  6. Never——t1無事物則t2也無事物,t1有事物則t2也報錯

Bean 的作用域

<bean        scope=”singleton”>  </bean>

  1. Singleton——當 ApplicationContext 初始化時,容器會自動初始化所有 singleton每次程式向 Spring 容器請求是, Spring 容器總是返回最開始建立的物件

  2. Prototype——每次程式向 Spring 容器請求是, Spring 容器會臨時去建立 prototype bean

  3. Request——要在 web 應用才有效,每個使用者請求

  4. Session——要在 web 應該有才有效,每個使用者會話

  5. Global session——僅在 portlet  context 才有效

spring的事務如何配置

1.配置sessionFactory

<!-- 配置sessionFactory --> 

        <bean id="sessionFactory" 
 class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> 
        <property name="configLocation"> 
        <value>/WEB-INF/classes/hibernate.cfg.xml</value> 
        </property> 
        </bean>   

2. 配置事務管理器 

<!-- 配置事務管理器 --> 

   <bean id="transactionManager" 

 class="org.springframework.orm.hibernate3.HibernateTransactionManager”> 

     <property name="sessionFactory"> 
         <ref local="sessionFactory" /> 
     </property> 
</bean> 

 3. 配置事務特性 

<tx:adviceid="txAdvice"transactionmanager="transactionManager">

<tx:attributes> 
        <tx:method name="add*" propagation="REQUIRED"/> 
        <tx:method name="update*" propagation="REQUIRED"/> 
        <tx:method name="del*" propagation="REQUIRED"/> 
        <tx:method name="*" read-only="true"/> 
     </tx:attributes> 
 </tx:advice> 

歡迎工作一到五年的Java工程師朋友們加入Java架構開發:828545509 

群內提供免費的Java架構學習資料
(裡面有高可用、高併發、高效能及分散式、Jvm效能調優、Spring原始碼,MyBatis,Netty,Redis,Kafka
,Mysql,Zookeeper,Tomcat,Docker,Dubbo,Nginx等多個知識點的架構資料)合理利用自己
每一分每一秒的時間來學習提升自己,不要再用"沒有時間“來掩飾自己思想上的懶惰!趁年輕,使勁拼,給未來的自己一個交代!