1. 程式人生 > >spring筆記整理大全(一)

spring筆記整理大全(一)

1.spring起源:


    早期使用java開發企業應用(企業應用系統,比如:人力資源管理系統、OA辦公自動化系統、財務系統 ,所有企業應用的系統總稱為ERP)使用EJB(Enterprise java Bean)開發,是sun提供的規範,比如:把javabean分為:Bean(Session Bean),實體Bean(Entity Bean)和訊息驅動Bean(MessageDriven Bean)。
EJB特點依賴於應用伺服器(比如:weblogic、websphere,類似 於tomcat),在開發EJb程式時過程比較繁瑣。
    
    Spring的出現是為了取代EJB的臃腫、低效、脫離現實缺點。Spring致力於J2EE應用的各層的解決方案,而不是僅僅專注於某一層的方案。可以說Spring是企業應用開發的“一站式”選擇,並貫穿表現層、業務層及持久層。然而,Spring並不想取代那些已有的框架,而是與它們無縫地整合。

2.參考資料

3.spring定義(什麼是spring)(官網: http://spring.io/ )


    Spring是分層的JavaSE/EE應用一站式輕量級開源框架。以Ioc(Inverse of control)控制反轉和Aop(Aspect Oriented Programming)面向切面程式設計為核心
    分層:
        web層
            web層:spring MVC框架(類似 struts2,是一個mvc框架),提供和其它web層整合方案;
        業務層
            業務層:宣告式事務管理方式、任務排程;
        持久層
            持久層:jdbc模版開發工具包、和其它持久層hibernate框架整合方案;
            上邊各層以IOC和AOP作為基礎。
    一站式:


        spring提供各層的解決方案。
    輕量級:
        相對於EJB來說,好用,簡單、方便,spring不依賴應用伺服器(weblogic)。
    開源框架:
        純java開源框架;

        整合眾多開源框架;
        和Struts2 表現層框架整合;
        和Hibernate 持久層框架整合;
        和Ibatis、Mybatis持久層框架整合 ;

        現在企業 90% 以上,都在使用Spring  !!!!!!!

4.Spring好處


    1.方便解耦,簡化開發:
    Spring就是一個大工廠,可以將所有物件建立和依賴關係維護,交給Spring管理
    2.AOP程式設計的支援:
    Spring提供面向切面程式設計,可以方便的實現對程式進行許可權攔截、執行監控等功能
    3.宣告式事務的支援:
    只需要通過配置就可以完成對事務的管理,而無需手動程式設計
    4.方便程式的測試:
    Spring對Junit4支援,可以通過註解方便的測試Spring程式
    5.方便整合各種優秀框架:
    Spring不排斥各種優秀的開源框架,其內部提供了對各種優秀框架(如:Struts、Hibernate、MyBatis、Quartz等)的直接支援
    6.降低JavaEE API的使用難度:
    Spring 對JavaEE開發中非常難用的一些API(JDBC、JavaMail、遠端呼叫等),都提供了封裝,使這些API應用難度大大降低

5.spring裝配Bean/例項化Bean的方式

    1.applicationContext.xml方式:

       在xml當中配置一個bean,然後寫一個入口測試一下

 

    2.註解方式:

       用到的註解有:@Component,@Repository,@Service,@Controller

       然後在配置檔案裡添加註解掃描:

    3.javaBean的方式:

       宣告一個java類,類上加@Configuration,如果是springboot專案,類上加@SpringBootConfiguration,

方法上加@Bean這個註解:

6.FactoryBean和BeanFactory的區別


    FactoryBean,是一個特殊Bean,可以生產另一個bean。
    
    BeanFactory,是一個工廠,可以生產任意bean。

7.IOC、DI


    不使用IOC物件之間呼叫,存在耦合問題;
    如果使用IOC思想,將iOC當成一個容器,物件要呼叫另一個物件時,通過iOC容器來呼叫,
    引用iOC,iOC是Inversion of Control的縮寫,翻譯成“控制反轉”;
    IOC定義:
        將原來程式中自己建立實現類物件的控制權反轉到iOC容器中,程式只需要從iOC容器獲取建立好的物件;
        iOC容器相當於一個工廠;
    DI:
        所謂依賴注入,就是由IOC容器在執行期間,動態地將某種依賴關係注入到物件之中。

8.IOC和DI的區別


    iOC和 DI 描述的是同一件事 ;
    iOC強調 將物件的建立權,被反轉到IoC 容器;
    DI 強調 iOC容器將物件的依賴關係,動態注入到物件之中 ,DI是控制反轉具體的實現過程。
    
    依賴注入關係:

   

9.IOC容器的作用


    1、將bean配置在applicationContext.xml中,IOC容器在構建時自動建立bean例項(相當於new 物件)
    2、將bean所依賴的bean配置在applicationContext.xml中,IOC容器自動將bean所依賴的物件注入進去。

10.ClassPathXmlApplicationContext的三種路徑方式


    
    兩個xml傳入另一個xml中:import

11.bean的命名方式


    1.id
        <bean id="pName1" class="pojo.Person"></bean>
    2.name
        1)name引號裡的值不能重複,

<bean name="pName2" class="pojo.Person"></bean>

<bean name="pName3" class="pojo.Person"></bean>
       2) name可以定義多個用逗號隔開,

<bean name="pName4,pName5" class="pojo.Person"></bean>
       3)獲取任意name即可獲取bean
        
    3.匿名
        沒有名稱,自定義的獲取需要的全限定名
        <bean class="pojo.Person"></bean>


   12.bean的作用域


    1.singleton
        單例 預設使用單例,不存資料共享用單例,單例就建立一個例項 ;
        <bean id="dan" class="pojo.Person" scope="singleton"></bean>
    2.prototype
        多例 存在資料共享用多例,多例每次都會建立一個例項;
        <bean id="duo" class="pojo.Person" scope="prototype"></bean> 

spring筆記整理大全(二)連結:

https://blog.csdn.net/qq_43154385/article/details/85161945