《Spring敲门砖之基础教程第一季》 第二章(1) Spring框架之IOC首例-HelloWorld

回顾

上一章我们主要学习了Spring的一些理论知识,对Spring框架有了一个总体的概括,大家应该在头脑里形成一个初步的印象,接下来我们就会针对Spring框架进行一些列的实践讲解,通过例子来展示Sping的魅力。

今天,我们主要讲解一个简单的示例,也是学习每一门语言或者一个工具,大家最通俗易懂,就是“HelloWorld”,我们通过Spring管理Bean,来输出一个“HelloWorld”。

构建项目

上一章节,我们已经将Spring所有的依赖的jar包下载到制定位置。今天我们来构建一个java项目,并且引入Spring的相关jar,然后使用Spring的IOC来管理Bean。

第一步,首先打开Eclipse开发工具,选择一个新的工作空间目录。新建Java Project

第二步,我们导入Spring相关jar,还有sl4j的日志相关jar

右键选中项目选择Build Path -> Configure Build Path,点击选择Libraries, 选中Add External JARs ,

232722_qLS5_723298.png

我们选中Spring下载的所有jar ,还有日志相关的jar。

第三步,我们新建一个java源文件,HelloWord.java和Bootstrap.java,将它们放在包 com.travelwithfram.study下。

233455_d5PC_723298.png

其中,HelloWord.java 内容如下:

package com.travelwithfram.study;

public class HelloWorld {
	
	private String message;

	public void getMessage() {
		System.out.println("Your Message : " + message);
	}

	public void setMessage(String message) {
		this.message = message;
	}
}

Bootstrap.java内容如下:

package com.travelwithfram.study;

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

public class BootStrap {
	public static void main(String[] args) {
		ApplicationContext context = new ClassPathXmlApplicationContext("Beans.xml");
		HelloWorld obj = (HelloWorld) context.getBean("helloWorld");
		obj.getMessage();
	}
}

第四步,我们创建Beans.xml配置文件,新建一个xml文件,然后在Spring项目的demo里,copy一个项目的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-3.0.xsd">

   <bean id="helloWorld" class="com.travelwithfram.study.HelloWorld">
       <property name="message" value="Hello World!"/>
   </bean>

</beans>

这里的root是<beans>标签,然后在里面可以配置多个<bean>标签,每一个都标示一个被容器管理的bean,这里我们配置了id为"helloWorld",具体指向的类为com.travelwithfram.study.HelloWorld,并且注入了属性property,它的值为"Hello World!",那么Spring在创建这个类的时候,会帮我们自动初始化属性的值。然后我们就可以使用这个属性的值。

第五步,前面所有的配置工作都做好了,我们就可以来检验一下我们的成果了,接下来启动Bootstrap,我们遇到一个小问题,程序启动报了异常,看一下错误:

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 com.travelwithfram.study.BootStrap.main(BootStrap.java:8)
Caused by: java.lang.ClassNotFoundException: org.apache.commons.logging.LogFactory
	at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
	at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
	at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
	... 8 more

很明显,是因为少了jar包,我们按照异常去排查,发现org.springframework.context.support.AbstractApplicationContext ,下面代码可以看出

/** Logger used by this class. Available to subclasses. */
	protected final Log logger = LogFactory.getLog(getClass());

   这个里面日志使用的是org.apache.commons.logging.LogFactory的api,所以我们还需要下载.commons.logging的相关jar。下载地址如下

http://commons.apache.org/proper/commons-logging/download_logging.cgi

下载后,添加到项目环境里即可。重新启动Bootstrap,可以看到如下输出:

115651_LOmF_723298.png

恭喜吧,证明我们配置的Sping管理bean容器已经可以成功运行。

总结

这节课,我们主要讲述了一个最基本的使用Sping容器的IOC功能,通过配置了一个Sping管理的javabean,我们在使用的过程中,不需要手动去new一个对象,只需要去容器里查找,可以通过id查找,也可以通过类名去查找。最后我们找打了需要的类,直接使用就可以了,也无需关心这个类的整个生命周期,完全交由Sping控制,大家是不是觉得很有意思,后面我们会介绍Spring更多精彩的功能。

声明:

本文介绍纯属个人观点,如果不对的地方欢迎批评指正,让我们共同进步,朝着正确的方向前进。如果您喜欢本文请关注下面公众账号获取最新文章,您的支持是我前行的动力。

090712_nSD6_723298.jpg

转载于:https://my.oschina.net/songjianguo/blog/736023

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值