鍍金池/ 教程/ Java/ Spring初學(xué)快速入門
Spring EL hello world實例
Spring使用@Autowired注解自動裝配
MapFactoryBean實例
Bean InitializingBean和DisposableBean實例
Spring使用@Required注解依賴檢查
安裝Spring工具套件到Eclipse
CGLIB is required to process @Configuration classes
Spring EL Arrays, Lists, Maps實例
Spring由類型(Type)自動裝配
Spring在bean配置文件中定義電子郵件模板
Spring發(fā)送帶附件郵件
ListFactoryBean實例
Struts 2 + Spring + Hibernate集成實例
Spring bean引用實例
Spring JdbcTemplate batchUpdate()實例
Spring SetFactoryBean實例
Spring通過setter方法注入
Spring EL hello world實例
在bean配置文件中的電子郵件模板
Spring發(fā)送帶附件的Email
Spring EL 方法調(diào)用實例
Spring自動裝配Beans
Spring由構(gòu)造方法自動裝配
Spring使用@Required注解依賴檢查
Spring SimpleJdbcTemplate查詢示例
自定義@Required-style注解
Spring+JDBC實例
Spring EL三元運算(if-then-else)實例
JdbcTemplate+JdbcDaoSupport實例
Spring自動掃描組件
Spring EL方法調(diào)用實例
Spring自動裝配Beans
Spring EL bean引用實例
Spring依賴注入(DI)
Spring EL Lists,Maps實例
Spring通過構(gòu)造方法依賴注入
通過MailSender發(fā)送電子郵件
Spring AOP實例(Pointcut, Advisor)
Spring EL運算符實例
Spring JavaConfig實例
Spring依賴注入 (DI)
Spring EL bean引用實例
Spring由AutoDetect自動裝配
Spring由構(gòu)造方法自動裝配
Spring JdbcTemplate查詢實例
Spring SimpleJdbcTemplate batchUpdate()實例
Spring+JDBC實例
如何注入值到Spring bean屬性
Spring SimpleJdbcTemplate類命名參數(shù)實例
Spring PropertyPlaceholderConfigurer實例
Spring JdbcTemplate batchUpdate() 實例
Spring EL與ExpressionParser測試
Spring內(nèi)部Bean實例
加載多個Spring bean配置文件
Spring+Hibernate+MySql實例(注解)
Spring AOP+AspectJ 在XML配置實例
Spring自動代理創(chuàng)建者實例
Spring EL正則表達(dá)式實例
測試 Spring EL與ExpressionParser
java.lang.ClassNotFoundException: org.exolab.castor.xml.XMLExcep
Spring PropertyPlaceholderConfigurer實例
Spring bean配置繼承
Spring使用Setter依賴注入
Spring自動裝配@Qualifier實例
Spring依賴檢查
Spring hello world實例
Spring依賴注入servlet會話監(jiān)聽器
Spring自定義@Required-style注解
Spring bean作用域
Spring AOP攔截器的序列
注入值到Spring Bean的屬性
Spring JdbcTemplate+JdbcDaoSupport實例
Spring教程
Spring自動裝配@Qualifier實例
Spring MapFactoryBean例子
Spring Bean作用域?qū)嵗?/span>
Cannot proxy target class because CGLIB2 is not available
Spring AOP攔截器的順序
Spring集合(List, Set, Map, and Properties)實例
Spring SimpleJdbcTemplate類命名參數(shù)實例
Spring通過自動檢測自動裝配
Spring+Hibernate+MySql實例
Spring JavaConfig @Import實例
訪問MessageSource的bean(MessageSourceAware)
Spring JdbcTemplate查詢實例
Spring JavaConfig @Import實例
Spring Object/XML映射實例
Spring Bean引用例子
Spring AOP+AspectJ注解實例
java.lang.ClassNotFoundException: org.apache.xml.serialize.XMLSe
Spring依賴檢查
Spring JavaConfig實例
Spring AOP+AspectJ注解實例
Spring bean配置繼承
Spring自動掃描組件
自動代理創(chuàng)建者實例
Spring Bean init-method 和 destroy-method實例
Spring通過構(gòu)造方法注入
Spring過濾器組件自動掃描
Spring構(gòu)造方法注入類型歧義
Spring+JDBC實例
Spring EL正則表達(dá)式實例
Spring通過Gmail SMTP服務(wù)器MailSender發(fā)送電子郵件
Spring AOP+AspectJ在XML配置實例
SetFactoryBean實例
Spring注入日期到bean屬性-CustomDateEditor
Spring AOP通知實例 – Advice
Spring使用@Autowired注解自動裝配
Spring AOP實例(Pointcut,Advisor)
Spring AOP在Hibernate的事務(wù)管理
Spring初學(xué)快速入門
Spring內(nèi)部bean實例
Spring bean加載多個配置文件
Spring + Hibernate+ MySql注解實例
Spring @PostConstruct和@PreDestroy實例
Spring依賴注入servlet會話監(jiān)聽器
Spring ListFactoryBean實例
Spring松耦合的實例
Spring過濾器組件自動掃描
Spring按名稱(Name)自動裝配
Spring AOP通知實例(Advice)
Spring AOP在Hibernate事務(wù)管理
Bean init-method和destroy-method實例
Spring EL操作符實例
Spring注入日期到bean屬性(CustomDateEditor)
資源加載程序的getResource()示例
Bean @PostConstruct和@PreDestroy實例
Struts2+Spring集成實例
Spring集合 (List,Set,Map,Properties) 實例
Spring按類型(Type)自動裝配
Spring由名稱(Name)自動裝配
Spring SimpleJdbcTemplate batchUpdate()實例
Spring hello world實例
Spring Bean InitializingBean和DisposableBean實例
Spring構(gòu)造方法注入類型歧義
Spring EL三元操作符(if-then-else)實例
Spring+Hibernate+MySql實例
Spring松耦合實例

Spring初學(xué)快速入門

1- 介紹

本教程文章是基于以下編寫的:
  • Spring Framework 4.0.4 RELEASE
  • Eclipse 4.5 MARS (ok for Eclipse 4.4 LUNA)
在本文中使用Maven來聲明Spring庫,而不是下載Spring庫,并以正常的方式來聲明。
Maven是一個工具,可以幫你自動,高效地管理您的庫,它已成為慣例,所有 Java 程序員必須知道。如果你不知道如何使用Maven,可以花10分鐘就學(xué)會如何使用它:
如果你想下載Spring和聲明庫,您可以用傳統(tǒng)的方式見附錄在文件的結(jié)尾。

2- Spring框架

下圖顯示了Spring框架的結(jié)構(gòu)。

  1. IoC Container: 這是最重要的,也是最基礎(chǔ)的, Spring的基礎(chǔ)。它的作用是配置和Java對象的生命周期管理。這篇教程中我們將學(xué)習(xí)這一部分。
  2. DAO, ORM, AOP, WEB: 該模塊可用于將工具或框架集成到了Spring。

2.1- 反轉(zhuǎn)控制和依賴注入

要了解這個問題,我們使用以下幾類:
// Interface HelloWorld
public interface HelloWorld {
    public void sayHello();
}
 
// Class implements HelloWorld
public class SpringHelloWorld implements HelloWorld {
   public void sayHello()  {
           System.out.println("Spring say Hello!");
   }
}
 
// Other class implements HelloWorld
public class StrutsHelloWorld implements HelloWorld {
   public void sayHello()  {
           System.out.println("Struts say Hello!");
   }
}
 
 
// And Service class
public class HelloWorldService {
    
     // Field type HelloWorld
     private HelloWorld helloWorld;
    
     // Constructor HelloWorldService
     // It initializes the values for the field 'helloWorld'
     public HelloWorldService()  {
           this.helloWorld = new StrutsHelloWorld();
     }
 
}
顯而易見的是 HelloWorldService 類管理創(chuàng)建 HelloWorld 對象。
- 另外,在上述情況下,當(dāng) HelloWorldService 對象從它的構(gòu)造創(chuàng)建時,HelloWorld對象也被創(chuàng)建了。 它是從StrutsHelloWorld 創(chuàng)建。
現(xiàn)在的問題是,您要創(chuàng)建一個HelloWorldService對象,HelloWorld對象也同時被創(chuàng)建,但它必須是SpringHelloWorld。
所以 HelloWorldService 是控制“對象創(chuàng)建” Hello World 的。我們?yōu)槭裁床粍?chuàng)建 Hello World 轉(zhuǎn)讓由第三方,
而是使用 HelloWorldService ?因為我們有“反轉(zhuǎn)控制”(IOC)的定義。
并且IoC容器將充當(dāng)管理者角色,創(chuàng)建了HelloWorldService 和 HelloWorld 。

IoC = Inversion of Control





IoC容器創(chuàng)建 HelloWorldService 對象,是通過 setter 方法傳遞 HelloWorld 對象到HelloWorldService。
IoC容器做的是“依賴注入”到HelloWorldService。這里的相關(guān)性是指對象之間的依賴關(guān)系: HelloWorldService 和 helloWorld.
在這一點上,我們已經(jīng)明確了什么是 IoC和DI。讓我們舉個例子來更好的理解。

3- 創(chuàng)建項目

  • File/New/Other...


輸入:
  • Group Id: com.yiibai
  • Artifact Id: HelloSpring

您的項目已創(chuàng)建:

確保您的項目是建立在Java7或更高版本。右鍵單擊該項目并選擇屬性。


4- 聲明Spring的基礎(chǔ)庫

這是 Spring的 HelloWorld 例子,所以我們只使用基本的Spring庫(核心)。打開pom.xml文件來將使用的庫聲明:
  • pom.xml 使用以下內(nèi)容重新覆蓋原上面的內(nèi)容。
<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.yiibai</groupId>
  <artifactId>HelloSpring</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  
  
      <dependencies>
 
        <!-- Spring Core -->
        <!-- http://mvnrepository.com/artifact/org.springframework/spring-core -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>
            <version>4.1.4.RELEASE</version>
        </dependency>
         
        <!-- Spring Context -->
        <!-- http://mvnrepository.com/artifact/org.springframework/spring-context -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>4.1.4.RELEASE</version>
        </dependency>
         
    </dependencies>
  
</project>

5- 工程代碼


  • HelloWorld.java
package com.yiibai.tutorial.spring.helloworld;
 
public interface HelloWorld {
     
    public void sayHello();
     
}
  • HelloWorldService.java
package com.yiibai.tutorial.spring.helloworld;
  
public class HelloWorldService {
  
    private HelloWorld helloWorld;
  
    public HelloWorldService() {
  
    }
  
    public void setHelloWorld(HelloWorld helloWorld) {
        this.helloWorld = helloWorld;
    }
  
    public HelloWorld getHelloWorld() {
        return this.helloWorld;
    }
  
}
  • SpringHelloWorld.java
package com.yiibai.tutorial.spring.helloworld.impl;
  
import com.yiibai.tutorial.spring.helloworld.HelloWorld;
  
public class SpringHelloWorld implements HelloWorld {
  
    @Override
    public void sayHello() {
        System.out.println("Spring Say Hello!!");
    }
  
}
  • StrutsHelloWorld.java
package com.yiibai.tutorial.spring.helloworld.impl;
  
import com.yiibai.tutorial.spring.helloworld.HelloWorld;
  
public class StrutsHelloWorld implements HelloWorld {
  
    @Override
    public void sayHello() {
        System.out.println("Struts Say Hello!!");
    }
  
}
  • HelloProgram.java
package com.yiibai.tutorial.spring;
  
import com.yiibai.tutorial.spring.helloworld.HelloWorld;
import com.yiibai.tutorial.spring.helloworld.HelloWorldService;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
  
public class HelloProgram {
  
     
    public static void main(String[] args) {
         
        ApplicationContext context =
                new ClassPathXmlApplicationContext("beans.xml");
         
        HelloWorldService service =
             (HelloWorldService) context.getBean("helloWorldService");
          
        HelloWorld hw= service.getHelloWorld();
         
        hw.sayHello();
    }
}
  • beans.xml

<beansxmlns="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">
  
    <beanid="springHelloWorld"
        class="com.yiibai.tutorial.spring.helloworld.impl.SpringHelloWorld"></bean>
    <beanid="strutsHelloWorld"
        class="com.yiibai.tutorial.spring.helloworld.impl.StrutsHelloWorld"></bean>
  
  
    <beanid="helloWorldService"
        class="com.yiibai.tutorial.spring.helloworld.HelloWorldService">
        <propertyname="helloWorld"ref="springHelloWorld"/>
    </bean>
  
</beans>

6- 運行示例

運行 HelloProgram.java

運行 HelloProgram 類的結(jié)果如下:

打開 beans.xml 文件并更改配置:
<!-- Original -->
<beanid="helloWorldService"
    class="com.yiibai.tutorial.spring.helloworld.HelloWorldService">
   <propertyname="helloWorld"ref="springHelloWorld"/>
</bean>
 
<!-- Change to: -->
<beanid="helloWorldService"
    class="com.yiibai.tutorial.spring.helloworld.HelloWorldService">
   <propertyname="helloWorld"ref="strutsHelloWorld"/>
</bean>
重新運行 HelloProgram 類并得到以下結(jié)果。

7- Spring的工作原理

Spring在這個例子中,工作原理說明如下圖所示:

beans.xml
  • 這是一個配置文件,您可以在這里聲明Java bean。
可以通過讀取beans.xml 文件來創(chuàng)建一個應(yīng)用程序上下文對象
ApplicationContext context =
                newClassPathXmlApplicationContext("beans.xml");
IoC容器中,其作用是作為第三種角色,它的任務(wù)是創(chuàng)建 beans.xml 文件中聲明的 Java Bean 對象。并通過setter方法注入依賴
在這個例子中,HelloWorldService 是一個 java bean 注入依賴。
<!-- beans.xml -->
 
<beanid="helloWorldService"
    class="com.yiibai.tutorial.spring.helloworld.HelloWorldService">
    
    <!-- Call: helloWorldService.setHelloWorld(springHelloWorld) -->
    <propertyname="helloWorld"ref="springHelloWorld"/>
 
</bean>

8- 使用Spring MVC - 編寫Web應(yīng)用程序

接下來,你可以學(xué)習(xí)使用Spring MVC編寫Web應(yīng)用程序:

9- 附:下載Spring 庫

您可以下載 Spring 從以下網(wǎng)址:

解壓下載的zip文件到硬盤驅(qū)動器文件夾,如下:

代碼下載:http://pan.baidu.com/s/1bwgce6