Spring之旅第一篇-初識Spring

1、概述

只要用框架開發java,必定躲不過spring,Spring是一個輕量級的Java開源框架,存在的目的是用於構建輕量級的J2EE應用。Spring的核心是控制反轉(IOC)和麪向切面編程(AOP)。Spring有以下特色:java

  1. 輕量級:應用大小和應用開支,包括應用方式web

  2. DI/IoC:提供鬆耦合的一種實現技術spring

  3. AOP:切面編程將業務邏輯從應用服務中分離數據庫

  4. 容器:包含並管理應用對象的生命週期和配置express

  5. 框架:使用組件配置組合成複雜的應用,並提供不少基礎功能apache

因爲spring是一個容器型的框架,因此它不排斥其餘框架,而且能夠輕鬆的整合其餘框架。編程

Spring以一種非侵入式的方式來管理你的代碼,Spring提倡」最少侵入」,這也就意味着你能夠適當的時候安裝或卸載Spring 。數組

2、模塊

Spring框架大約由20多個小模塊組成,這些模塊分爲:核心容器,數據訪問/集成,Web,面向切面編程(AOP),消息和測試等等,以下圖所示緩存

下面逐一介紹這幾大模塊:websocket

1.核心容器:核心容器包括spring-core, spring-beans,spring-context, spring-context-support, 和spring-express,其中spring-core和spring-beans模塊提供框架的基礎部分,包括控制反轉和依賴注入。BeanFactory是一個複雜的工廠模式的實現。上下文(spring-context)模塊創建在Core和Bean模塊的基礎之上:它提供了一種框架風格來訪問對象,相似於JNDI註冊表。Context模塊繼承了Bean模塊的特色並增長了對國際化、事件傳播、資源加載等的支持。ApplicationContext接口是Context模塊的焦點。spring-context-support支持將第三方庫集成到Spring應用中,例如緩存,JavaMail、模板引擎等。spring-expression模塊爲運行時查詢和操做對象提供了強大的表達式語言,它是JSP2.1中的EL語言的擴展,這種語言支持設置和獲取屬性值,屬性賦值,方法調用,訪問數組,邏輯和算術運算符,還支持列表投影、選擇和常見的聚合。

2.面向切面:Spring的AOP封裝包提供了符合AOP Alliance規範的面向切面的編程實現,讓你能夠定義,例如方法攔截器和切點,從邏輯上講,從而減弱代碼的功能耦合,清晰的被分離開。

3.消息傳送:Spring FrameWork 4包括一個spring-messaging模塊,它是從Spring集成項目的關鍵抽象,如Message, MessageChannel,MessageHandle。該模塊該包含一組註釋映射消息的方法,相似Spring MVC基於註釋的編程模型。

4.數據訪問/集成:這一層包括JDBC、ORM、OXM、JMS和事務模塊。spring-jdbc模塊提供了一個JDBC抽象層從而消除了使人乏味的JDBC編程和解析數據庫提供商特定的錯誤。spring-tx模塊支持類的編程和聲明式事務管理,實現特殊的接口和你的POJO(Plain Old Java Objects)。spring-orm模塊提供了流行的對象-關係映射集成層API,包括JPA、JDO和Hibernate。使用spring-orm模塊可使這ORM框架結合Spring提供的其餘特性,好比前面提到的簡單的聲明式事務管理。spring-oxm模塊提供了一個抽象層,支持對象/XML映射的實現,如JAXB、 Castor、XMLBeans、 JiBX和XStream。

5.網絡層:包括spring-web、spring-webmvc、spring-websocket和spring-webmvc-portlet模塊。spring-web模塊提供基礎的針對web開發的集成特性,包括文件上傳功能、利用Servlet偵聽器進行IOC容器初始化和針對web的應用上下文。它還包括一個HTTP客戶端和Spring的web部件的遠程支持。spring-webmvc模塊包括Spring的MVC模型和REST Web服務實現的web應用程序,Spring的MVC框架提供了一種清晰的分離模型,在領域模型代碼和web form之間,而且還能夠藉助Spring框架的其餘特性。

6.測試層:spring-test模塊支持單元測試和包含Junit或者TestNG的集成測試,它提供了Spring的ApplicationContext一致性裝載和這些上下文的緩存機制,它還提供了可用於測試代碼隔離的模擬對象。

3、動手建立

概念先講到這,先上手建立項目找找感受。使用的是idea開發工具。建立項目開始(使用maven構建)

在Groupid中填入項目的包名便可。Artifactid自定義便可,這裏建議與項目名稱一致。版本默認在Groupid中填入項目的包名便可。Artifactid自定義便可,這裏建議與項目名稱一致。版本默認.

另外的是maven相關設置,不懂得同窗能夠先去學學maven,項目中都是必學的

選擇文件位置

建立完成,項目架構如圖(img與md文件是說明文件,不計其中)

在main下新建文件夾resources用於存放資源文件

在resources上右鍵,選擇mark directory as 選中Resources Root

 

 

添加spring依賴包

<dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-context</artifactId>
      <version>4.2.6.RELEASE</version>
    </dependency>

pom.xml的完整配置以下:

 

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>com.yuanqinnan</groupId>
  <artifactId>springLearn</artifactId>
  <version>1.0-SNAPSHOT</version>

  <name>springLearn</name>
  <!-- FIXME change it to the project's website -->
  <url>http://www.example.com</url>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>

  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.11</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-context</artifactId>
      <version>4.2.6.RELEASE</version>
    </dependency>
  </dependencies>

  <build>
</build>
</project>

 

在剛纔新建的resources下新建META-INF包,在META-INF下新建applicationContext.xml.

文件內容以下

 

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
</beans>

 

新建test包和HelloWorld.java,Main.java結構以下:

代碼以下:

 

public class HelloWorld {

        private String info;

        public String getInfo() {
            return info;
        }

        public void setInfo(String info) {
            this.info = info;
        }
}
public class Main {
    public static void main(String[] args)
    {
        //讀取配置文件
        ApplicationContext ctx=new ClassPathXmlApplicationContext("META-INF/applicationContext.xml");
        //獲取bean的實例
        HelloWorld t=(HelloWorld) ctx.getBean("hello");
        //調用方法
        System.out.println(t.getInfo());
    }
}

 

在applicationContext.xml中配置bean

 

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

    <bean id="hello" class="com.yuanqinnan.test.HelloWorld">
        <property name="info" value="Hello,This is my first Spring Application!"></property>
    </bean>
</beans>

 

右鍵運行Main

獲得結果:

如此,一個spring項目便建立成功

相關文章
相關標籤/搜索