成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

第一章--Spring之旅

pkwenda / 1778人閱讀

摘要:兩種方式來表示的應(yīng)用上下文。日志,事務(wù)管理和安全這樣的系統(tǒng)服務(wù)經(jīng)常融入到具有核心業(yè)務(wù)邏輯的組件中去,這些系統(tǒng)服務(wù)通過被稱為橫切關(guān)注點。容器使用管理構(gòu)成應(yīng)用的組件,他會創(chuàng)建相互協(xié)作的組件之間的關(guān)聯(lián)。的生命周期四俯瞰的風(fēng)景線模塊,,,,

完整代碼請見:https://github.com/codercuixi...
為了降低Java開發(fā)的復(fù)雜性,Spring采用了以下4種策略:

基于pojo的輕量級和最小侵入式編程

通過依賴注入和面向接口實現(xiàn)松耦合

基于切面和慣例進(jìn)行聲明式編程

通過切面和模板減少樣本式代碼

一. 依賴注入

(利用面向接口編程的思想,由Spring應(yīng)用上下文負(fù)責(zé)依賴注入)
通過依賴注入(DI ,Dependency Inject),對象的依賴關(guān)系由系統(tǒng)中負(fù)責(zé)協(xié)調(diào)各對象的第三方組件在創(chuàng)建對象的時候進(jìn)行設(shè)定。對象無需自行創(chuàng)建或管理他們的依賴關(guān)系,如圖1.1所示,依賴關(guān)系被自動注入到需要他們的對象中去。

Spring通過應(yīng)用上下文(Application Context)來裝在bean定義并把組裝起來。Spring自帶了很多很多應(yīng)用上下文,他們之間的區(qū)別僅僅在于如何加載配置。

兩種方式來表示Spring的應(yīng)用上下文。 1.注解(墻裂推薦使用)

1通過@Configuration來聲明這個類是Java Bean的配置類,通過在具體的方法前面添加@Bean注解來聲明一個Bean

package sia.knights;

    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;

    import java.io.PrintStream;

    /**
     * Create by cuixin on 2018/8/25 
     **/ 
    @Configuration public class KnightConfig {
        @Bean
      public Knight knight() {
            return new BraveKnight(quest());
        }

        @Bean
      public Quest quest() {
            return new SlayDragonQuest(stream());
        }

        @Bean
      public PrintStream stream() {
            return new FakePrintStream();
        }
    }
    

1.2. 通過@ContextConfiguration來配置Spring應(yīng)用上文下信息

 package sia.knights;

    import org.junit.After;
    import org.junit.Test;
    import org.junit.runner.RunWith;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.test.context.ContextConfiguration;
    import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
    import org.springframework.test.context.support.AnnotationConfigContextLoader;

    import javax.annotation.Resource;

    /**
     * Create by cuixin on 2018/8/25 
     **/ 
    @RunWith(SpringJUnit4ClassRunner.class)
    @ContextConfiguration(classes = KnightConfig.class, loader = AnnotationConfigContextLoader.class)
    public class KnightJavaConfigInjectionTest {
        @Autowired
      private Knight knight;
        @Resource
      private FakePrintStream printStream;

        @After
      public void clearPrintStream() {
            printStream.clear();
        }

        @Test
      public void shuoldInjectKnightWithSlayDragonQuest() {
            knight.embarkOnQuest();
            assert "Embarking on quest to slay the dragon!
".equals(printStream.getPrintedString());
        }
    }
2.xml配置文件(基本已經(jīng)棄用)

2.1. knigh.xml

  

        
            
        

        
            
        

    

2.2 通過Spring提供的ClassPathXmlApplicationContext或者FileSystemXmlApplicationContext來尋找xml配置文件

    package sia.knights;

    import org.springframework.context.support.ClassPathXmlApplicationContext;

    /**
     * Create by cuixin on 2018/8/24
     **/ 
     public class KnightMain {
        public static void main(String args[]){
            ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("spring/knight.xml");
            Knight knight = context.getBean(Knight.class);
            knight.embarkOnQuest();
            context.close();
        }
    }
  
二.面向切面編程 AOP

面向切面編程(aspect-oriented programming,AOP)允許你把遍布應(yīng)用各處的功能分離出來形成可重用的組件。

系統(tǒng)由多個組件組成,比如核心業(yè)務(wù),日志,事務(wù)管理和安全。

日志,事務(wù)管理和安全這樣的系統(tǒng)服務(wù)經(jīng)常融入到具有核心業(yè)務(wù)邏輯的組件中去,這些系統(tǒng)服務(wù)通過被稱為橫切關(guān)注點。

如果不管不問,那么這些橫切關(guān)注點會重復(fù)出現(xiàn)在多個組件中,也會增加每一個組件的復(fù)雜性。

AOP能夠使這些服務(wù)模塊化,并且以聲明的方式將他們需要影響的組件中去。我們可以將切面想象成為覆蓋在很多組件之上的一個外殼。

2.1. 利用xml配置aop
  
     

      
        
      

      
        
      

      
        
      

   
     
        
        
        
    
   
 
三. 使用模板消除樣本式代碼

樣板代碼:為了實現(xiàn)通用的和簡單的任務(wù),不得不一遍遍重復(fù)寫的代碼。

3.1 容納你的Bean

在基于Spring的應(yīng)用中,你的應(yīng)用對象存在于Spring容器(container)中,如圖1.4所示,Sring容器負(fù)責(zé)創(chuàng)建帝鄉(xiāng),裝配他們,配置他們并管理他們的整個生命周期,從生存到死亡(在這里,可能就是new到finalize)。

容器是Spring的核心。Spring容器使用DI管理構(gòu)成應(yīng)用的組件,他會創(chuàng)建相互協(xié)作的組件之間的關(guān)聯(lián)。

3.2 Spring容器的兩種實現(xiàn)類型實現(xiàn)

3.2.1. bean工廠不常用。
由org.springframework.benas.factory.BeanFactory接口定義,是簡單的容器,提供最簡單的DI支持。應(yīng)用上下文由orgspringframework.context.ApplicationContext接口定義)基于BeanFactory構(gòu)建,并提供應(yīng)用框架級別的

3.2.2.使用應(yīng)用上下文

AnnotationConfigApplicationContext: 從一個或多個基于Java的配置類中加載Spring應(yīng)用上下文
ApplicationContext context = new AnnotationConfigApplicationContext(KnightConfig.class)

AnnotationConfigWebApplicationContext:從一個或多個基于Java的配置類中加載Spring Web應(yīng)用上下文
ClassPathXmlApplicationContext:從類路徑下的一個或多個xml配置文件中加載上下文定義,把應(yīng)用上下文的定義文件作為類資源

ApplicationContext context = new ClassPathXmlApplicationContext("knight.xml")

FileSystemXmlApplicationContext:從文件系統(tǒng)的一個或多個xml配置文件中加載上下文定義

ApplicationContext context = new FileSystemXmlApplicationContext("c://knight.xml")

XmlWebApplicationContext:從Web應(yīng)用的一個或多個xml配置文件中加載上下文定義。
3.3 bean的生命周期

四.俯瞰Spring的風(fēng)景線 4.1 Spring模塊

4.2 Spring portfolio

srping-web-flow . Spring web Service, Spring security,Spring Integration, SpringBatch, Spring Data, Spring Social,
Spring Mobile, Spring Boot

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/76936.html

相關(guān)文章

  • chrome擴(kuò)展開發(fā)之旅 第一

    摘要:擴(kuò)展及應(yīng)用介紹與區(qū)別介紹支持開發(fā)者為其編寫各種各樣的擴(kuò)展與應(yīng)用來擴(kuò)充其功能。用處安裝擴(kuò)展之后,就會讀取擴(kuò)展中的文件。結(jié)語以上就是第一章的總結(jié),接下來的筆記,敬請期待原書項目代碼下載擴(kuò)展及其應(yīng)用開發(fā) 讀書筆記介紹 寒假想自己做一個chrome擴(kuò)展,便從圖書館借了這本書。同時,為了培養(yǎng)自己的好習(xí)慣,做沉淀,便讀一章寫一篇總結(jié),全書總共10章,將會分為10篇博文。歡迎大家多多指正,也希望大家...

    lei___ 評論0 收藏0
  • Spring之旅第一站(不得不佩服老外...)

    摘要:表示少女與緊耦合在它的構(gòu)造函數(shù)中自行創(chuàng)建了。面向切面編程往往被定義為促使軟件系統(tǒng)實現(xiàn)關(guān)注點的分離一項技術(shù)系統(tǒng)由許多不同的組件組成,每個組件各負(fù)責(zé)一特定的功能。我們可以把切面想象為覆蓋在很多組件之上的一個外殼。 第1章 Spring之旅 說明 1、本文抄寫了《Spring 實戰(zhàn)》重點內(nèi)容,參考了GitHub上的代碼 2、每個人的學(xué)習(xí)方式不一樣,但目的是一樣的,活學(xué)活用。最近一直在聽《我...

    thekingisalwaysluc 評論0 收藏0
  • 【開發(fā)工具學(xué)習(xí)之旅-JMeter】- JMeter簡介以及HTTP協(xié)議使用測試

    摘要:簡介以及協(xié)議使用測試簡介簡介官網(wǎng)的組成取樣器進(jìn)行腳本邏輯控制。測試結(jié)果的請求介紹以及使用提供的請求登錄了做測試在中右鍵新建一個請求查看結(jié)果格式的請求實戰(zhàn)格式發(fā)送數(shù)據(jù),是以格式或者之類的數(shù)據(jù)來發(fā)送。發(fā)起請求模擬之后會出現(xiàn)以下錯誤。 ...

    dongfangyiyu 評論0 收藏0
  • Spring之旅第十站:MVC配置、上傳文件、異常處理、跨重定向請求、為控制器添加通知

    摘要:依賴于對請求的支持。使用解析兼容的沒有構(gòu)造器參數(shù),也沒有要設(shè)置的參數(shù),這樣,在應(yīng)用上下文中,將其聲明為就會非常簡單。默認(rèn)是沒有限制的整個請求的容量。 Spring MVC 高級的技術(shù) 本章內(nèi)容: Spring MVC配置的替代方案 處理文件上傳 在控制器中處理異常 使用flash屬性 稍等還沒結(jié)束 說明 如果你有幸能看到。后面的章節(jié)暫時不更新了,改變學(xué)習(xí)方式了。重要理解思想,這本書...

    leanote 評論0 收藏0
  • spring boot 之旅 - 集成模板引擎beetl

    摘要:之旅系統(tǒng)環(huán)境新建項目使用開發(fā)工具直接在官網(wǎng)創(chuàng)建參考博客新建驗證訪問啟動右鍵瀏覽器輸入頁面顯示正常集成視圖引擎參考文檔參考項目文件導(dǎo)入配置測試訪問學(xué)習(xí)文檔源碼下載百度云盤地址 spring boot 之旅 系統(tǒng)環(huán)境 JDK 8 Spring Boot 1.5.3 beetl 2.7.15 新建項目 adagio 使用開發(fā)工具 Spring Tool Suite - new Spri...

    aikin 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<