Spring笔记(第二弹:搭建第一个Spring工程)

我们来搭建一个最简单的Spring工程,暂时不使用Maven。

准备好相应的环境:

我们需要如下内容:
- 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>

测试一下

在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工程就搭好了,工程的目录结构如下:
工程的目录结构

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值