1. 程式人生 > >spring 個人小心得

spring 個人小心得

1  spring容器相當於一個工廠,這個工廠創造並控制了beans。同時解耦beans之間的控制權,使程式結構更加優化。

2  Bean物件建立的時機,預設是隨著容器建立,可以使用lazy-init=true(在呼叫getBean建立)延遲建立。

3  Spring容器預設是通過單例模式建立Bean物件的,也就是說, 預設情況下,通過呼叫ac.getBean("mybean")方法獲得的物件都是同一個bean物件。

     使用單例模式有風險,風險在於多執行緒併發訪問時會有一些狀況。在配置檔案加該屬性scope="prototype",會new一個。

4   IOC   註解注入:首先需要在applicationContext.xml中新增<context:component-scan/>   元件自動掃描。

bean元件註解

         @Service 用於Service業務元件@Control 用於Action控制組件@Respository 用於DAO資料訪問元件

  @Component 用於其他元件

依賴注入的註解標記
@Resource 按名稱@Resource(name="id名")
@AutoWired 按名稱

  @Autowired

論使用@Resource還是@Autowried,我們用再寫set方法的。

其他註解:@Scope 等價於<bean scope="">

5 AOP相關概念 *
1) Aspect切面(方面)
指的是共通業務處理,可以切入到多個目標物件,可多次使用
2) JoinPoint連線點
指的是切面元件在目標物件上作用的位置, 例如:方法上戒者發生異常。
3) Pointcut切入點
切入點是連線點的集合,採用表示式指定
4) Target Object目標物件
5) Advice通知
指的是切面元件在連線點上執行的勱作。 例如:在方法呼叫前、方法呼叫後、方法呼叫前後等。
6) AutoProxy勱態代理
採用了AOP

後,容器返回的物件是代理物件。使用者在使用時,由代理物件呼叫切面元件和 目標物件的功能。
a. 目標物件有介面採用JDK代理、
b. 目標物件沒有介面採用CGLIB代理

這5種類型的通知,在內部呼叫時這樣組織 

try{ 呼叫前置通知 環繞前置處理 呼叫目標物件方法 環繞後置處理 呼叫後置通知 }

catch(Exception e)

{ 呼叫異常通知 }

finally

{ 呼叫最終通知 }

AOP在applicationContecx檔案中的配置如下:

<aop:config> 

<aop:pointcut expression="within(tarena.service..*)" id="servicePointcut"/>

 <aop:aspect id="optLoggerAspect" ref="optLogger"> 

<aop:around method="logger" pointcut-ref="servicePointcut"/> 

</aop:aspect>

 </aop:config>

使用註解如下:


6  整合hibernate

a. 使用的API
 HibernateDaoSupport
提供編寫DAO元件的支援
 HibernateTemplate
提供了增刪改查操作
 save():儲存
 update():更新
 delete():刪除
 find():查詢
 如果需要分頁查詢,可以使用HibernateDaoSupport提供的
this.getSession()方法獲取Session物件。
b. XML配置
 首先配置連線池dataSource
 其次配置SessionFactory
 最後將SessionFactory注入給所有DAO元件