spring架構圖
core:ioc和aop
擴展框架:spring mvc,dao,jdbc
一 概念:
spring是一個框架,可以理解爲一個IOC容器,容器裏裝着bean,bean可以理解爲一個類;早起版本只有core,其他組件都是後來新版本逐步新加的
spring mvc是web自框架,與其他web框架例如struts2
二原理:
1 spring mvc原理
web程序啓動時,ContextLoaderServlet加載xml配置文件,初始化DispatchServlet--------http請求-------容器(Tomcat)解析http---------request-------映射關係(路徑,方法,參數)--------DispatchServlet---------HandlerMapping--------HandlerAdapter-- ----controller-------ModelAndView------------ViewResolver-------View------render
interface FrameworkServlet{
private webApplicationContext;
public initFrameworkServlet(){//初始化HandlerMappings類的對象}
public doGet(){serviceWrapper();}
public doPost(){serviceWrapper();}
public serviceWrapper(){doService() ;}
public doService(){doDispatch(request,
response);}
doDispatch(request, response){
HandlerExecutionChain mappedHandler = null;
//從HandlerMappings list列表中取HandlerMapping對象;每個HandlerMapping對象代表一個Controller和URL的映射
//其實在運行的時候是一個HandlerExecutionChain和URL的映射,而HandlerExecutionChain對象其實就是對Controller和它 //interceptors的一個包裝器,可以把HandlerMapping看成Controller和URL的映射
mappedHandler = getHandler(processedRequest, false);
}
}
DispatchServlet
implement FrameworkServlet
三xml配置
web.xml
applicationcontext.xml
<servletname>servlet.xml
action.xml
service.xml
dao.xml
四註解
1 bean相關注解
@Component 對比較中立的類進行註解,現在不推薦使用
@controller 表現層bean,即structs框架的action
@service 業務層bean
@Repository 數據訪問層bean
@scope範圍
sigleton,proproty,request,session,global session
2 spring mvc相關注解
@handlemapping
handleradapter
resolveview
view
3 數據綁定
httprequest與註解方法參數之間的轉換稱之爲數據綁定 data bind
五 面向切面編程AOP
簡介:對公共行爲的抽象,包括日誌,權限,異常處理,事務處理
1 反射機制 reflection,也稱內省inrospection
java程序可以加載一個運行時才得知名稱的class,獲悉其完整構造,並生成其對象實體,或設置field值,或調用method
通過java.lang.Class java.lang.reflect包中的Method,Field,Constructor等實現
2 動態代理與CGLIB代理
動態代理:自定義handler InvorcationHandler
3 基本概念
連接點join point:程序運行某個階段的點,例如方法調用,異常拋出
切入點pointcut:連接點集合,需要注入adive位置的地方,指明advice在什麼條件下才能觸發
advisor:連接pointcut和adive的配置器
通知advice:某個連接點所採用的處理邏輯
4 基於xml配置的aop
<aop:config>
<aop:pointcut/>
<aop:aspect>
</aop:aspect>
</aop:config>
5 基於@AspectJ註解的aop
AspectJ是AOP的一種實現,spring集成了它
@Aspect
@Pointcut
@Before等