初識Spring

Spring是什么?

Spring可以讓每一位開發(fā)者使用java開發(fā)更加的快捷、簡單以及更加的安全,是世界上最流行的java框架。

  • simple 使java更加的簡單
  • modern 使java更加現代化
  • productive 使java生產效率更高
  • reactive 使java本地化
  • cloud-ready 已經準備好云端

一、沒有Spring之前是什么樣

沒有Spring之前是什么樣?

  • Web開發(fā)在沒有Spring之前是使用Servlet
  • 其他開發(fā)沒有Spring之前是自己寫單例

使用Servlet開發(fā)

  1. 先編寫servlet類
public class ServletDemo1 extends HttpServlet {
    public void doGet(HttpServletRequest request, HttpServletResponse response)
           throws ServletException, IOException {
                PrintWriter out = response.getWriter();
                out.println("HelloServlet!");
           }
}
  1. 配置xml文件,指定servlet和servlet-mapping
<web-app version="2.5"
    xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
    http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
  <servlet>
     <!-- 類名 -->
    <servlet-name>HelloWorld</servlet-name>
    <!-- 所在的包 -->
    <servlet-class>com.test.demo.HelloWorld</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>HelloWorld</servlet-name>
    <!-- 訪問的網址 -->
    <url-pattern>/servlet/HelloWorld</url-pattern>
    </servlet-mapping>
</web-app>

二、有Spring之后

有Spring之后該如何操作呢?我們可以直接使用注解就可以完成一個接口的開發(fā)

@SpringBootApplication
@RestController
public class DemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }

    @GetMapping("/hello")
    public String hello(@RequestParam(value = "name", defaultValue = "World") String name) {
        return String.format("Hello %s!", name);
    }

}

這么來看的話,有了Spring之后,就不需要額外的再進行配置xml了,確實使得java的開發(fā)變得簡單許多,自然也提高了開發(fā)效率,使得java開發(fā)更加的多產。

三、核心容器

Beans:
容器的主要組件BeanFactory,它是工廠模式實現的。BeanFactory使用控制反轉模式(IOC)將應用的配置和依賴性規(guī)范與實際的應用代碼分開。將所有的對象的控制權全部交由IOC容器處理,好處就是解耦,把對象之間的依賴關系減小的最低。

Core:
Core是用來負責發(fā)現、創(chuàng)建并處理bean之間的關系的一個工具包。core把bean的創(chuàng)建、bean的互相注入的方法定義完畢,上層服務只需要進行調用。

Context:
Context可以理解成上下文,這個上下文由多種數據結構組成,可以提供我們運行時需要的一些數據和保存運行時的一些數據。

SpEL:
Spring Expression Language(簡稱SpEL)提供了強大的表達式語言支持,支持訪問和修改屬性值,方法調用,支持訪問及修改數組、容器和索引器,命名變量,支持算數和邏輯運算,支持從 Spring 容器獲取 Bean,它也支持列表投影、選擇和一般的列表聚合等。
最簡單的應用,可以讀取系統(tǒng)屬性和環(huán)境變量:

public class MyCommandLineRunner implements CommandLineRunner {
    @Value("${spring.datasource.url}")
    String dbUrl;
 }

四、Spring的組成

Spring框架結構圖如下所示:

Spring體系結構圖
  • Data Access/Integration(數據訪問/集成)
  • Web 模塊
  • Core Container(Spring 的核心容器)
  • AOP、Aspects、Instrumentation 和 Messaging
  • Test 模塊

既然Spring的核心框架和思想已經初步構建完成,但是也得需要有人去使用起來,光有架構和框架還不行,還得根據自有框架去開發(fā)出當前基礎的工具及功能出來,所以有上圖Spring的組成圖中我們可以看出來,基于核心容器向上開發(fā)出了AOP、Aspects、Instrumentation 和 Messaging,我們可以把這一層理解成驅動層。再向上開發(fā)出了數據訪問和Web模塊,能夠滿足基本的日常使用,這一層可以理解成應用層。有基本的上層應用,開發(fā)者就能夠利用他們滿足日常。
在Spring的大框架下,可以很方便的接納其他開發(fā)者的上層應用,我們只需要在驅動層上對第三方框架進行簡單的適配,就可以讓其他開發(fā)者直接使用了。所以Spring的生態(tài)越來越好,用的人也越來越多,進入了一個

五、為什么使用單例模式

為了提高性能。

  • 單例可以少創(chuàng)建實例,每個實例只創(chuàng)建一次
  • 獲取更加的快捷,直接在內存中取出
  • 少了JVM的垃圾回收
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 一、spring簡化Java開發(fā) 為了降低Java開發(fā)的復雜性,spring框架采取了四種關鍵策略 (1)基于PO...
    Z_小龍閱讀 82評論 0 0
  • Spring是什么? 官方來說:Spring是一個開源的輕量級開發(fā)應用框架,其目的是用于簡化企業(yè)級應用程序開發(fā)。 ...
    吃井不忘挖水人呢閱讀 220評論 0 1
  • Spring 框架是當前 Java 領域應用最廣的框架,它之所以那么成功,這主要是得益于它的設計理念。它的理念包括...
    皮皮的小豬仔閱讀 255評論 0 0
  • 1,核心特性:依賴注入(DI)和面向切面編程(AOP) 2,為了降低Java開發(fā)的復雜性,spring采取了什么措...
    今天比昨天努力閱讀 263評論 0 1
  • 來源:公眾號 作者:Java知音鏈接:https://mp.weixin.qq.com/s/45yy2qNIAI...
    小郭子閱讀 748評論 0 0

友情鏈接更多精彩內容