作者:藝術就是爆炸 
出處:https://blog.csdn.net/lianjiww/article/details/53571795

準備好相應的環境:

我們需要如下內容: 
- eclipse,這裡我選用的是Eclipse Java EE IDE for Web Developers.Version: Mars Release (4.5.0) 
- JDK,這裡我選用的是JDK1.8 
- Spring框架,這裡我選用的是spring-framework-3.2.9.RELEASE。這個包可以到spring的官網上下載,也可以在我上傳的資源裡下載:http://download.csdn.net/detail/lianjiww/9707957

新建工程

新建一個普通的Java Project

新增包

在工程的根目錄下新建一個libs資料夾,從spring-framework-3.2.9.RELEASE的libs目錄裡把必要的包copy進來,必要的包有: 
- spring-beans-3.2.9.RELEASE.jar 
- spring-context-3.2.9.RELEASE.jar 
- spring-core-3.2.9.RELEASE.jar 
- spring-expression-3.2.9.RELEASE.jar 
然後在”Java Build Path”裡把以上4個包通過”Add JARs…”新增到工程裡。

新增配置檔案

在src目錄下新建一個applicationContext.xml檔案。現在工程的目錄結構應該是這樣: 
工程的目錄結構 
這個配置檔案裡的頭資訊可以在我們下載的spring壓縮包裡找到。具體如下: 
在spring-framework-3.2.9.RELEASE\docs\spring-framework-reference\html目錄下開啟index.html,找到”E.2 XML Schema-based configuration”,他這裡提供了兩種標頭檔案的方式,一種是DTD-style,一種是Schema-style。我這裡選用Schema-style,把內容copy到我們的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">

<!-- bean definitions here -->

</beans>

至此,spring的框架就搭好了。

新增業務程式碼

在com.demo.dao包下新建一個interface,UserDAO.java,內容如下:

package com.demo.dao;

public interface UserDAO {

    public void sayHello();
}

在com.demo.dao.impl包下新建一個class,UserDAOImpl.java,實現UserDAO介面,內容如下:

package com.demo.dao.impl;

import com.demo.dao.UserDAO;

public class UserDAOImpl implements UserDAO {

    @Override
    public void sayHello() {
        System.out.println("hello world!");
    }

}

把業務類宣告到spring容器中

在applicationContext.xml裡新增:

<bean id="userDAO" class="com.demo.dao.impl.UserDAOImpl"></bean>
  • 1

測試一下

在test包下新建一個Test.java進行測試,內容如下:

package test;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.demo.dao.UserDAO;

public class Test {

    public static void main(String[] args) {
        // 讀取spring的容器
        ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
        // 從spring容器中獲取物件
        UserDAO userDao = context.getBean("userDAO", UserDAO.class);
        // 從得到的物件中呼叫需要的方法
        userDao.sayHello();
    }

}

執行一下,我們會發現,報錯了:

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory
    at org.springframework.context.support.AbstractApplicationContext.<init>(AbstractApplicationContext.java:164)
    at org.springframework.context.support.AbstractApplicationContext.<init>(AbstractApplicationContext.java:228)
    at org.springframework.context.support.AbstractRefreshableApplicationContext.<init>(AbstractRefreshableApplicationContext.java:89)
    at org.springframework.context.support.AbstractRefreshableConfigApplicationContext.<init>(AbstractRefreshableConfigApplicationContext.java:58)
    at org.springframework.context.support.AbstractXmlApplicationContext.<init>(AbstractXmlApplicationContext.java:61)
    at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:136)
    at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:83)
    at test.Test.main(Test.java:12)
Caused by: java.lang.ClassNotFoundException: org.apache.commons.logging.LogFactory
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    ... 8 more

看日誌發現是因為缺少commons-logging-1.1.3.jar,我們把這個jar引入工程,然後再次執行main方法,發現可以打印出”hello world!”了。 
這樣,一個最簡單的spring工程就搭好了,工程的目錄結構如下: 
工程的目錄結構