亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? 15. spring note.txt

?? 在達內培訓java筆記
?? TXT
?? 第 1 頁 / 共 2 頁
字號:

day1
什么是Spring?
    開源、輕量級

Spring 特征:
    1.B/S 和 C/S,使用資源小
    2.對象間的關系松,高內聚,低耦合
      IOC --- Inverse of control 
         使得業務組件都處在框架的管理之下
         框架可以管理組件的創建和依賴關系
         框架可以提供可以配置的服務
    3.通過AOP技術將業務與非業務分離
      AOP --- Aspect Oreinted Programming
      在不修改組件的前提下,為組件提供擴展的服務
    4.Spring容器管理整個JavaBean生命周期
      簡化對j2ee技術的使用
    5.與Hibernate、Struts一樣是個框架
      (類集合) (框架提供) 
    6.Spring是一個全方位的框架
      SpringMVC 類似 Struts

Spring框架在多層開發中位于那一層?或哪幾層?
    框架簡化開發過程,提供公共服務和便利的工具
    1.業務邏輯層 (Ioc *AoP) 最擅長的一層
    2.表現層    (SpringMVC Web B/S都有) 
    3.數據持久層 (SpringDAO ORM) 

什么是IoC:
    1.IOC --- Inverse of control (控制反轉) 
       A主動創建B的實例:正向控制
      過去:拉模型
           組件決定自己依賴的對象的創建 
           接口沒有在松散耦合中起到太大作用
      IOC:推模型,也叫做依賴注入
           采用工廠模式管理應用組件的創建,管理組件的依賴關系 
           用接口表達組件間的依賴
      依賴注入的方式
        1)構造方法注入
        2)set 方法注入
    2.Spring IoC 容器先創建B的實例,再把B的實例注入A中
    3.執行過程:
      1)執行 BeanFactory 或 ApplicationContext 時,解析 xml 文件
      2)通過反射,執行 JavaBean 的空參構造方法,創建實例
      3)調用 JavaBean 的 set方法,將xml的信息注入到這 JavaBean 實例
        或者執行滿參構造方法創建實例,同時注入 xml 的信息

spring 框架的7個組成部分
    1.BeanFactory -- (低級容器,接口)使用工廠模式實例化組件,裝配組件
       XmlBeanFactory(實現類) 
    2.ApplicationContext (高級容器,接口)--- bean factory 增加事件發布,增加了國際化,資源訪問等的支持
       ClassPathXmlApplicationContext(實現類) 
    3.aop --  提供一種基于聲明方式的AOP
    4.dao 支持--簡化jdbc,聲明的事務
    5.orm 支持-- 簡化使用 Hibernate ,toplink 等持久化框架,方便的事務管理
    6.web 支持-- 在 web 應用中使用 spring 框架的相關支持,協調表現層和業務層的關系
    7.web mvc--- 獨立的 web mvc 框架

    spring 是全方位的框架
    spring 的組成部分相對獨立,可選擇的使用

作業:
    用戶注冊頁面
    要求: Servlet + Spring + JDBC + MySQL
         1.判斷用戶名是否已注冊(保證用戶名唯一性) 
         2.采用B/S架構,使用IoC功能,完成JavaBean的注入。
           在JavaBean不要使用 new 方式創建對象。
         3.連接數據庫時的 driver ,配置在 xml 文件中。








day2
二、控制反轉(inverse of control IOC ) 
    2、Bean 工廠(BeanFactory)的功能和配置
        ClassPathResource
            在類路徑下查找資源
            另有 FileSystemResource
        XmlBeanFactory 
            讀取 xml 文件中的配置信息
            生產bean
            解決bean 依賴
    
    * Bean 的創建
        spring 可調用bean的構造方法,或通過工廠方法生產 bean 對象

    1.利用 bean 的構造方法創建bean
        無參的構造方法
            <bean id="refName" class="foopak.FooClass">
               <property name="username" value="root"/>
               <property name="password" value="123"/>
            </bean>
        有參的構造方法,需指明構造方法的參數列表,通過:
            <bean id="refName" class="foopak.FooClass">
                <construct-arg><value>arg0</value></construct-arg>
                <construct-arg><value>arg1</value></construct-arg>
            </bean>
            表明調用了兩個參數的構造方法

    2.通過工廠方法獲得 bean 對象
        bean 沒有公共的構造方法,需通過工廠類或工廠實例來創建
        分為靜態工廠和實例工廠方法兩種情況
        靜態工廠方法:
            class 指明工廠類,factory-method 指明工廠方法
            如: Connection con=DriverManager.getConnection(url,user,pwd);
            對應的配置:
                <bean id="con" class="java.sql.DriverManager" factory-method="getConnection">
                    <construct-arg><value>jdbc:mysql://localhost/test</value></construct-arg>
                    <construct-arg><value>zhangsan</value></construct-arg>
                    <construct-arg><value>pwd</value></construct-arg>
                </bean>
                工廠方法參數和構造方法參數設置的形式相同
            
             實例工廠方法:    
                要先創建工廠實例,然后再由工廠實例創建產品
                如: Statement stmt = con.createStatement();
                        con 對象是工廠
                        stmt 對象是產品
                配置為:
                 <bean id="con" class="java.sql.DriverManager" factory-method="getConnection">
                       ……
                 </bean>
                 <bean id="stmt" factory-bean="con" factory-method="createStatement"/>
    
    單例 bean
        bean 工廠生產bean 缺省都是單例的
        scope 屬性
            scope="singleton|prototype|request|session"
        后兩者用于web應用中    
         

    通過注入解決bean的依賴

        1 依賴注入的兩種方式
            1) set 注入
                <property name="xxxYy">
                    ……
                </property>
               相當于 setXxxYy(val);
            2) 構造方法注入
                <construtor-arg>……</construtor-arg>
          spring 直接利用了 bean 的 set 或 構造方法
          避免了使用接口注入的侵入性
          
        2 依賴的目標類型分成三種形式:
            1) 基本類型+String  
                <value>data</value>
               類型自動轉化
            2) 對其他bean 的引用  
                <ref bean="target"/>
            3) 集合類型
                list
                props
                set
                map
        
        3 讓spring 自動裝配bean,解決依賴
            autowire 屬性指明自動裝配的依據: 
                    byName--- id=property
                    byType--- 屬性的類型=當前工廠中bean的類型        
                    constructor--構造方法參數的類型=當前工廠中bean的類型
                    autodetect-- constructor ---> byType
            autowire-candidate 屬性
                指明是否作為 autowire 的候選對象
                解決多個候選對象的沖突
                    true --- 
                    false --- 
        4 讓容器檢測 bean 所有的依賴是否都已經滿足
            某個 bean 需要設置好所有屬性
            防止遺漏裝配,在運行后出現莫名奇妙的情況
            dependency-check 屬性指明應檢查的目標類型
                simple -- 基本類型+字符串+集合
                objects --- 對其他bean的依賴
                all 
                none -- 默認值

    管理 Bean 生命周期
        生命周期
            構造
            set
            回調初始化方法
            getBean 返回
        回調方法:
            兩個屬性指明
                init-method 
                destroy-method 
            或實現兩個接口:
                InitiallizingBean
                DisposableBean
            
    重用 bean 定義
        parent -- 繼承 bean 定義
                    bean 之間不一定有繼承關系
        abstract --- 只作為模板,不可以被實例化
    
    補充:
        name
            id=""
            name="/myBean"
            name="a b c"
            
        延遲加載bean
            bean 的加載時機
                預先加載
                    構造 bean 工廠時實例化所有bean
                延遲加載
                    getBean 時構造
                    先構造依賴的bean

                BeanFactory 總是延遲加載的
                ApplicationContext 
                    BeanFactory 的擴展
                    預先加載 單例 bean
                    lazy-init (true|false)

    3、ApplicationContext
     BeanFactory 的擴展,為應用提供國際化和事件框架的支持

    1)I18N(國際化)
    ApplicationContext 可以讀取國際化的消息文件
        getMessage();
    
    實施:
        1)注冊消息源
        <bean id="messageSource" 
            class="ResourceBundelMessageSource">
            <property name="basename">
                <value>MessageResource</value>
            </property>
        </bean>    
        bean 的id 必須是"messageSource"
        2)讀取消息
        ApplicationContext 的方法:
            getMessage(String key,String[] args,Locale l);
                key - 消息的key
                args- 插入到消息中的參數
                l - 區域
                    Locale 語言和區域代碼的封裝對象
                        locale=new Local("zh","CN");
                            local=Locale.getDefault();
    思考:工廠管理的組件怎樣使用獲得國際化消息
    
    注意:因為AppicationContext包含了BeanFactory所有的功能,所以優先選擇 ApplicationContext 

    2)事件框架
    提供了一個觀察者模式的框架,快速實現組件間的事件通知
    
    實施:    
        1 所有想得到通知的對象都實現ApplicationListener
        2 事件源發出事件:applicationContext.publishEvent(event);
    自定義事件類
        什么時候需要?
            被觀察者在需要傳輸數據給觀察者時
        怎么做?
            自定義事件類 extends ApplicationEvent
















day3
三、面向切面編程(Aspect oriented Programming) 
    1、代理模式
    定義
        1 A , B 實現了相同的接口,接口要求方法 m
        2 用戶調用A的m,A又調用B的m
         
    解決什么問題(什么時候考慮使用代理模式)
        1 擴展功能,而不修改現有的類 
        2 職責具有清晰的劃分
        
    怎么用    
        Actale--接口 方法 act
        Actor---實現
        Test --- 客戶
        Broker--實現,Actor 的代理
    
    采用代理實現日志
        IFoo
            doA,doB,doC
        Foo
        
        Test -- Test
        FooLogProxy        
                
    
    注意思考:日志代理的弊端
        相同的代碼散落在每一個方法中

    
    2、使用動態代理解決
        下面方法可以直接為接口 Foo 產生代理實例:
            Foo proxy = (Foo) Proxy.newProxyInstance(
                    Foo.class.getClassLoader(),
                    new Class[] 
            { Foo.class },
            handler);
             對 proxy 調用接口定義的方法,都會被分發給:
                handler.invoke()
             handler 是實現InvocationHandler 接口的實例
             這樣就把對多個方法的調用集中起來了
             handler.invoke()然后再分發請求到目標方法

         實施:
            1) 實現 InvocationHandler 接口
            2)產生代理

    3、Spring 的AOP 采用動態代理實現
    一些別扭的概念:
    切面:當前關注的一個代碼的流程,其中可能調用了多個類的多個方法。
    連接點:一個代碼流程中的某個步驟,也就是這個代碼流程中對某個方法的調用。
    通知(Advice):對于某個方法(連接點),進行攔截的攔截規則。
    切入點:對于某個方法(連接點),是否被攔截的判斷(過濾)規則。
    目標對象:某個連接點所在的對象。
    AOP代理:目標對象的代理。

    代理的生成:ProxyFactoryBean(org.springframework.aop.framework.ProxyFactoryBean)
        工廠類,生產代理
        區別于 BeanFactory
    InvocationHandler 的行為 : Advice

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产一区二区三区精品欧美日韩一区二区三区 | 精品久久五月天| 欧美色爱综合网| 欧美私模裸体表演在线观看| 91福利国产精品| 欧美在线短视频| 欧美三级蜜桃2在线观看| 欧美色网站导航| 欧美日韩国产片| 欧美一级日韩不卡播放免费| 日韩精品最新网址| 国产日韩在线不卡| 国产精品国产自产拍在线| 国产精品毛片大码女人| 亚洲欧美日韩国产一区二区三区| 一区二区欧美国产| 日韩成人免费看| 国内精品第一页| 99久久精品99国产精品| 欧美伊人久久久久久久久影院| 欧美日韩一区二区三区在线 | 中文字幕国产精品一区二区| 中文字幕一区二区三区在线不卡| 亚洲免费观看高清完整版在线观看 | 国产黄色91视频| 国v精品久久久网| 日本久久一区二区| 欧美丰满嫩嫩电影| 精品久久人人做人人爱| 亚洲国产精华液网站w| 亚洲精品精品亚洲| 日韩av一级电影| 成人网在线免费视频| 在线一区二区三区| 欧美成人高清电影在线| 国产精品久线观看视频| 亚洲国产wwwccc36天堂| 国产又粗又猛又爽又黄91精品| 北条麻妃一区二区三区| 欧美日韩在线播放三区| 337p日本欧洲亚洲大胆精品| 亚洲桃色在线一区| 日韩一区精品字幕| 99视频一区二区三区| 欧美精品久久99久久在免费线 | 亚洲欧美日韩久久精品| 青青草成人在线观看| 床上的激情91.| 宅男在线国产精品| 国产精品国产精品国产专区不蜜| 日韩电影免费在线| 99精品在线免费| 欧美成人aa大片| 亚洲精品免费在线| 黄色成人免费在线| 欧美区视频在线观看| 国产精品无遮挡| 日本系列欧美系列| 色综合久久久久综合| 精品免费一区二区三区| 一区二区三区 在线观看视频| 国产精品综合一区二区三区| 欧美性大战久久久久久久蜜臀 | 成人免费视频一区| 欧美一区二区三区人| 亚洲欧美一区二区不卡| 国产大片一区二区| 日韩精品一区二区三区四区视频| 亚洲美女免费视频| 国产成人在线网站| 日韩午夜激情免费电影| 亚洲在线成人精品| av一区二区不卡| 国产视频视频一区| 精品制服美女久久| 91精品国产免费| 亚洲一本大道在线| 91免费国产视频网站| 国产日产欧美一区二区三区| 麻豆免费精品视频| 欧美一区二区免费视频| 亚洲福利视频一区二区| 一本久久综合亚洲鲁鲁五月天| 国产午夜精品一区二区三区嫩草 | 国产成人午夜视频| 日韩欧美一二三四区| 午夜av区久久| 欧美日韩www| 亚洲国产成人tv| 在线看国产一区| 一级日本不卡的影视| 91视频国产资源| 国产精品亲子伦对白| 高清国产一区二区三区| 国产亚洲va综合人人澡精品| 国产一区不卡在线| 久久这里只有精品首页| 久久99精品国产麻豆婷婷洗澡| 欧美一级免费大片| 麻豆91精品视频| 日韩精品一区二区在线观看| 青青草伊人久久| 精品少妇一区二区三区在线视频| 免费在线欧美视频| 精品99一区二区| 国产专区综合网| 久久精品亚洲一区二区三区浴池| 狠狠久久亚洲欧美| 国产婷婷色一区二区三区| 国产成人av一区二区| 国产精品污网站| 99久久亚洲一区二区三区青草 | 国产成人av电影在线播放| 久久久久久麻豆| 国产98色在线|日韩| 国产精品灌醉下药二区| av在线播放成人| 亚洲午夜精品在线| 欧美精品日韩精品| 国产真实精品久久二三区| 久久精品视频在线看| 97se狠狠狠综合亚洲狠狠| 一卡二卡欧美日韩| 日韩欧美色综合| 丰满放荡岳乱妇91ww| 亚洲精品高清视频在线观看| 欧美日韩三级在线| 久久99精品视频| 1区2区3区国产精品| 欧美午夜精品久久久久久孕妇 | 欧美伦理视频网站| 久久99在线观看| 国产精品另类一区| 欧美日韩亚洲综合在线 | 欧美调教femdomvk| 久久国产精品第一页| 中文字幕+乱码+中文字幕一区| 91传媒视频在线播放| 日韩不卡免费视频| 国产精品系列在线| 在线不卡欧美精品一区二区三区| 久久精品国产久精国产爱| 综合色天天鬼久久鬼色| 在线电影欧美成精品| 国产1区2区3区精品美女| 亚洲高清免费在线| 国产欧美视频一区二区| 欧美日韩精品欧美日韩精品一综合| 精品影视av免费| 亚洲色图一区二区三区| 日韩视频永久免费| 91丨porny丨蝌蚪视频| 捆绑变态av一区二区三区| 亚洲天堂网中文字| 精品第一国产综合精品aⅴ| 色女孩综合影院| 韩日欧美一区二区三区| 亚洲三级电影网站| 26uuu久久综合| 欧美午夜宅男影院| 成人一区二区三区视频| 蜜桃视频在线观看一区二区| 亚洲精品中文在线观看| 久久久国产一区二区三区四区小说 | 日本韩国精品一区二区在线观看| 久久国产精品无码网站| 亚洲大片精品永久免费| 中文文精品字幕一区二区| 9191成人精品久久| 色视频一区二区| 东方欧美亚洲色图在线| 蜜桃91丨九色丨蝌蚪91桃色| 一区二区三区国产精品| 中文字幕av一区二区三区免费看 | 国产精品五月天| 欧美成人一区二区三区| 欧美亚洲免费在线一区| 成人动漫视频在线| 国产精一区二区三区| 麻豆精品国产传媒mv男同| 五月激情综合网| 一区二区三区视频在线看| 国产欧美一区二区精品性色| 日韩精品一区二区三区老鸭窝| 欧美日韩国产乱码电影| 欧美日韩中文精品| 91浏览器打开| 99免费精品视频| 成人午夜激情片| 国产成人精品免费在线| 韩国理伦片一区二区三区在线播放 | 午夜av一区二区三区| 亚洲制服丝袜在线| 亚洲一区二区三区四区的| 亚洲色图色小说| 18涩涩午夜精品.www| 中文字幕一区二区不卡| 国产精品久久久久久亚洲伦| 中文字幕乱码亚洲精品一区| 欧美激情在线看|