Spring?Spring?Spring到底是啥?

前言

不是開發出身,現在的事情也雜,做過個項目對Spring就是照着用,沒有系統瞭解過。
最近在看框架方面的內容,就順便看看了Spring。
看了一天,對Spring是什麼?IoC、依賴注入基本搞明白了。AOP應用場景懂了,原理沒懂。
硬着頭皮總結下吧,纔對得起這一天的查閱。

1、產生的背景

2003年,一位大神不滿EJB開發的臃腫,認爲經過設計,利用javaBean的方式也一樣達到企業開發的效果。於是編寫了個開源的框架。其中的一個模塊SpringMVC更完美的實現了web開發中的3層架構,影響深遠。
現在2020年,17年前思想仍然影響着現在搬磚的小弟,大師真是革命性的人物。同時,Spring也不停在進化着,如SpringBoot,SpringCloud等。

2、好處

理解真真的不深刻,照搬。

  1. 低侵入式設計,代碼污染極低
  2. 獨立於各種應用服務器,基於Spring框架的應用,可以真正實現Write Once,Run Anywhere的承諾
  3. Spring的DI機制降低了業務對象替換的複雜性,提高了組件之間的解耦
  4. Spring的AOP支持允許將一些通用任務如安全、事務、日誌等進行集中式管理,從而提供了更好的複用
  5. Spring的ORM和DAO提供了與第三方持久層框架的良好整合,並簡化了底層的數據庫訪問
  6. Spring並不強制應用完全依賴於Spring,開發者可自由選用Spring框架的部分或全部

3、spring構成

在這裏插入圖片描述

核心容器

核心容器由spring-core,spring-beans,spring-context,spring-context-support和spring-expression(SpEL,Spring表達式語言,Spring Expression Language)等模塊組成,它們的細節如下:

spring-core模塊提供了框架的基本組成部分,包括 IoC 和依賴注入功能。

spring-beans 模塊提供 BeanFactory,工廠模式的微妙實現,它移除了編碼式單例的需要,並且可以把配置和依賴從實際編碼邏輯中解耦。

context模塊建立在由core和 beans 模塊的基礎上建立起來的,它以一種類似於JNDI註冊的方式訪問對象。Context模塊繼承自Bean模塊,並且添加了國際化(比如,使用資源束)、事件傳播、資源加載和透明地創建上下文(比如,通過Servelet容器)等功能。Context模塊也支持Java EE的功能,比如EJB、JMX和遠程調用等。ApplicationContext接口是Context模塊的焦點。spring-context-support提供了對第三方庫集成到Spring上下文的支持,比如緩存(EhCache, Guava, JCache)、郵件(JavaMail)、調度(CommonJ, Quartz)、模板引擎(FreeMarker, JasperReports, Velocity)等。
spring-expression模塊提供了強大的表達式語言,用於在運行時查詢和操作對象圖。它是JSP2.1規範中定義的統一表達式語言的擴展,支持set和get屬性值、屬性賦值、方法調用、訪問數組集合及索引的內容、邏輯算術運算、命名變量、通過名字從Spring IoC容器檢索對象,還支持列表的投影、選擇以及聚合等。

數據訪問/集成

數據訪問/集成層包括 JDBC,ORM,OXM,JMS 和事務處理模塊

Web

Web 層由 Web,Web-MVC,Web-Socket 和 Web-Portlet 組成

4、spring使用

4.1用idea創建spring項目

  1. idea創建maven項目
  2. 使用archetype,選擇【】
  3. 在pom文件,添加依賴了的spring包
 <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-context</artifactId>
      <version>5.1.5.RELEASE</version>
    </dependency>
  </dependencies>
  1. 自動重新import
  2. 添加ApplicationContext.xml文件,注意要設定資源根目錄
 <bean id="student" class="master.com.Student" scope="prototype">
        <property name="name"><value>setter學生的名字</value></property>
        <property name="age"><value>20</value></property>
        <property name="mainTeacher"><ref bean="teacher"></ref></property>
    </bean>

    <bean id="teacher" class="master.com.Teacher" scope="prototype">
        <property name="name"><value>setter老師的名字</value></property>
        <property name="education"><value>IT</value></property>
    </bean>
  1. 會自帶helloword,試運行
 //以前的寫法
        helloWorld hw=new helloWorld();
        hw.setName("常規方法");
        System.out.println(hw);
        System.out.println("======================");


        //spring
        ApplicationContext applicationContext=new ClassPathXmlApplicationContext("ApplicationContext.xml");
        helloWorld a=(helloWorld)applicationContext.getBean("a");
        System.out.println(a);
        System.out.println("======================");

可參考:https://blog.csdn.net/weixin_43373239/article/details/89578536

4.2 結合原來項目的理解

現在才明白了ApplicationContext的作用
還有配在裏邊的bean
當時真是懵懂照着配
總的來說,對Spring這個名詞沒有因未知而恐懼了,準備繼續用1周的時間再多瞭解些。路漫漫兮,都得懂點啊。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章